<html>
<head>
  <title>The tablelist::tablelist Command</title>

  <meta name="Author" content="Csaba Nemethi">
  <meta name="Keywords" content=
  "tablelist, multi-column, listbox, tree, widget">

  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body bgcolor="#FFFFFF">
  <div align="center">
    <h1>The <code><b>tablelist::tablelist</b></code> Command</h1>

    <h2>For Tablelist Version 5.11</h2>

    <h3>by</h3>

    <h2>Csaba Nemethi</h2>

    <address>
      <a href="mailto:csaba.nemethi@t-online.de">csaba.nemethi@t-online.de</a>
    </address>
  </div>
  <hr>

  <h2 id="contents">Contents</h2>

  <ul>
    <li><a href="#quick_ref">Quick Reference</a></li>

    <li><a href="#detailed_ref">Detailed Reference</a></li>
  </ul>

  <div align="center">
    <p><a href="index.html">Start page</a></p>
  </div>
  <hr>

  <h2 id="quick_ref">Quick Reference</h2>

  <dl>
    <dt><a href="#name">NAME</a></dt>

    <dd><code>tablelist::tablelist</code> &ndash; Create and manipulate
    tablelist widgets</dd>

    <dt class="tm"><a href="#synopsis">SYNOPSIS</a></dt>

    <dd>
      <pre>
<b>tablelist::tablelist</b> <i>pathName</i> ?<i>options</i>?
</pre>
    </dd>

    <dt><a href="#std_options">STANDARD OPTIONS</a></dt>

    <dd>
      <pre>
<b>-borderwidth          -highlightthickness  -setgrid
-cursor               -relief              -xscrollcommand
-exportselection      -selectbackground    -yscrollcommand
-highlightbackground  -selectborderwidth
-highlightcolor       -selectforeground</b>
</pre>
    </dd>

    <dt><a href="#body_options">OPTIONS FOR THE BODY COMPONENT OF THE
    WIDGET</a></dt>

    <dd>
      <pre>
<b>-background  -disabledforeground  -font  -foreground</b>
</pre>
    </dd>

    <dt><a href="#widget_options">WIDGET-SPECIFIC OPTIONS</a></dt>

    <dd><code><b><a href="#acceptchildcommand">-acceptchildcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#acceptdropcommand">-acceptdropcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#activestyle">-activestyle</a></b>
    <b>frame</b>|<b>none</b>|<b>underline</b></code></dd>

    <dd><code><b><a href="#arrowcolor">-arrowcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#arrowdisabledcolor">-arrowdisabledcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#arrowstyle">-arrowstyle</a></b>
    <b>flat6x4</b>|<b>flat7x4</b>|<b>flat7x5</b>|<b>flat7x7</b>|<b>flat8x5</b>|<b>flat9x5</b>|<b>flat9x6</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flat9x7</b>|<b>flat10x6</b>|<b>photo7x7</b>|<b>sunken8x7</b>|<b>sunken10x9</b>|<b>sunken12x11</b></code></dd>

    <dd><code><b><a href="#autoscan">-autoscan</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#collapsecommand">-collapsecommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#columns">-columns</a></b> {<i>width</i> <i>title</i>
    ?<b>left</b>|<b>right</b>|<b>center</b>? <i>width</i> <i>title</i>
    ?<b>left</b>|<b>right</b>|<b>center</b>? ...}</code></dd>

    <dd><code><b><a href="#columntitles">-columntitles</a></b> {<i>title</i>
    <i>title</i> ...}</code></dd>

    <dd><code><b><a href="#editendcommand">-editendcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#editselectedonly">-editselectedonly</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#editstartcommand">-editstartcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#expandcommand">-expandcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#forceeditendcommand">-forceeditendcommand</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#fullseparators">-fullseparators</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#height">-height</a></b> <i>lines</i></code></dd>

    <dd><code><b><a href="#incrarrowtype">-incrarrowtype</a></b>
    <b>up</b>|<b>down</b></code></dd>

    <dd><code><b><a href="#instanttoggle">-instanttoggle</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href=
    "#labelactivebackground">-labelactivebackground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href=
    "#labelactiveforeground">-labelactiveforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#labelbackground">-labelbackground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-labelbg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#labelborderwidth">-labelborderwidth</a></b>
    <i>screenDistance</i></code>&nbsp; or&nbsp; <code><b>-labelbd</b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#labelcommand">-labelcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#labelcommand2">-labelcommand2</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href=
    "#labeldisabledforeground">-labeldisabledforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#labelfont">-labelfont</a></b>
    <i>font</i></code></dd>

    <dd><code><b><a href="#labelforeground">-labelforeground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-labelfg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#labelheight">-labelheight</a></b>
    <i>lines</i></code></dd>

    <dd><code><b><a href="#labelpady">-labelpady</a></b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#labelrelief">-labelrelief</a></b>
    <b>raised</b>|<b>sunken</b>|<b>flat</b>|<b>ridge</b>|<b>solid</b>|<b>groove</b></code></dd>

    <dd><code><b><a href="#listvariable">-listvariable</a></b>
    <i>variable</i></code></dd>

    <dd><code><b><a href="#movablecolumns">-movablecolumns</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#movablerows">-movablerows</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#movecolumncursor">-movecolumncursor</a></b>
    <i>cursor</i></code></dd>

    <dd><code><b><a href="#movecursor">-movecursor</a></b>
    <i>cursor</i></code></dd>

    <dd><code><b><a href="#populatecommand">-populatecommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#protecttitlecolumns">-protecttitlecolumns</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#resizablecolumns">-resizablecolumns</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#resizecursor">-resizecursor</a></b>
    <i>cursor</i></code></dd>

    <dd><code><b><a href="#selectmode">-selectmode</a></b>
    <b>single</b>|<b>browse</b>|<b>multiple</b>|<b>extended</b></code></dd>

    <dd><code><b><a href="#selecttype">-selecttype</a></b>
    <b>row</b>|<b>cell</b></code></dd>

    <dd><code><b><a href="#setfocus">-setfocus</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#showarrow">-showarrow</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#showlabels">-showlabels</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#showseparators">-showseparators</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#snipstring">-snipstring</a></b>
    <i>string</i></code></dd>

    <dd><code><b><a href="#sortcommand">-sortcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#spacing">-spacing</a></b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#state">-state</a></b>
    <b>normal</b>|<b>disabled</b></code></dd>

    <dd><code><b><a href="#stretch">-stretch</a></b>
    <b>all</b>|<i>columnIndexList</i></code></dd>

    <dd><code><b><a href="#stripebackground">-stripebackground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-stripebg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#stripeforeground">-stripeforeground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-stripefg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#stripeheight">-stripeheight</a></b>
    <i>lines</i></code></dd>

    <dd><code><b><a href="#takefocus">-takefocus</a></b>
    <b>0</b>|<b>1</b>|<b>""</b>|<i>command</i></code></dd>

    <dd><code><b><a href="#targetcolor">-targetcolor</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#tight">-tight</a></b> <i>boolean</i></code></dd>

    <dd><code><b><a href="#titlecolumns">-titlecolumns</a></b>
    <i>number</i></code></dd>

    <dd><code><b><a href="#tooltipaddcommand">-tooltipaddcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#tooltipdelcommand">-tooltipdelcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#treecolumn">-treecolumn</a></b>
    <i>columnIndex</i></code></dd>

    <dd><code><b><a href="#treestyle">-treestyle</a></b>
    <b>adwaita</b>|<b>ambiance</b>|<b>aqua</b>|<b>baghira</b>|<b>dust</b>|<b>dustSand</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gtk</b>|<b>klearlooks</b>|<b>mint</b>|<b>newWave</b>|<b>oxygen1</b>|<b>oxygen2</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phase</b>|<b>plastik</b>|<b>plastique</b>|<b>radiance</b>|<b>ubuntu</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vistaAero</b>|<b>vistaClassic</b>|<b>win7Aero</b>|<b>win7Classic</b>|<br>
    &nbsp;<b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;winnative</b>|<b>winxpBlue</b>|<b>winxpOlive</b>|<b>winxpSilver</b></code></dd>

    <dd><code><b><a href="#width">-width</a></b> <i>characters</i></code></dd>

    <dt class="tm"><a href="#col_options">COLUMN CONFIGURATION OPTIONS</a></dt>

    <dd><code><b><a href="#col_align">-align</a></b>
    <b>left</b>|<b>right</b>|<b>center</b></code></dd>

    <dd><code><b><a href="#col_background">-background</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-bg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_changesnipside">-changesnipside</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_editable">-editable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_editwindow">-editwindow</a></b>
    <i>name</i></code></dd>

    <dd><code><b><a href="#col_font">-font</a></b> <i>font</i></code></dd>

    <dd><code><b><a href="#col_foreground">-foreground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-fg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_formatcommand">-formatcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#col_hide">-hide</a></b> <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_labelalign">-labelalign</a></b>
    <b>left</b>|<b>right</b>|<b>center</b></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelbackground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-labelbg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelborderwidth</a></b>
    <i>screenDistance</i></code>&nbsp; or&nbsp; <code><b>-labelbd</b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelcommand2</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelfont</a></b>
    <i>font</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelforeground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-labelfg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelheight</a></b>
    <i>lines</i></code></dd>

    <dd><code><b><a href="#col_labelimage">-labelimage</a></b>
    <i>image</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelpady</a></b>
    <i>screenDistance</i></code></dd>

    <dd><code><b><a href="#col_labelopts">-labelrelief</a></b>
    <b>raised</b>|<b>sunken</b>|<b>flat</b>|<b>ridge</b>|<b>solid</b>|<b>groove</b></code></dd>

    <dd><code><b><a href="#col_maxwidth">-maxwidth</a></b>
    <i>width</i></code></dd>

    <dd><code><b><a href="#col_name">-name</a></b> <i>name</i></code></dd>

    <dd><code><b><a href="#col_resizable">-resizable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_selectbackground">-selectbackground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_selectforeground">-selectforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_showarrow">-showarrow</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_showlinenumbers">-showlinenumbers</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_sortcommand">-sortcommand</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#col_sortmode">-sortmode</a></b>
    <b>ascii</b>|<b>asciinocase</b>|<b>command</b>|<b>dictionary</b>|<b>integer</b>|<b>real</b></code></dd>

    <dd><code><b><a href="#col_stretchable">-stretchable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#col_stripebackground">-stripebackground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_stripeforeground">-stripeforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#col_text">-text</a></b> <i>list</i></code></dd>

    <dd><code><b><a href="#col_title">-title</a></b> <i>title</i></code></dd>

    <dd><code><b><a href="#col_valign">-valign</a></b>
    <b>center</b>|<b>top</b>|<b>bottom</b></code></dd>

    <dd><code><b><a href="#col_width">-width</a></b> <i>width</i></code></dd>

    <dd><code><b><a href="#col_wrap">-wrap</a></b> <i>boolean</i></code></dd>

    <dt class="tm"><a href="#row_options">ROW CONFIGURATION OPTIONS</a></dt>

    <dd><code><b><a href="#row_background">-background</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-bg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#row_font">-font</a></b> <i>font</i></code></dd>

    <dd><code><b><a href="#row_foreground">-foreground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-fg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#row_hide">-hide</a></b> <i>boolean</i></code></dd>

    <dd><code><b><a href="#row_name">-name</a></b> <i>name</i></code></dd>

    <dd><code><b><a href="#row_selectable">-selectable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#row_selectbackground">-selectbackground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#row_selectforeground">-selectforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#row_text">-text</a></b> <i>list</i></code></dd>

    <dt class="tm"><a href="#cell_options">CELL CONFIGURATION OPTIONS</a></dt>

    <dd><code><b><a href="#cell_background">-background</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-bg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#cell_editable">-editable</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#cell_editwindow">-editwindow</a></b>
    <i>name</i></code></dd>

    <dd><code><b><a href="#cell_font">-font</a></b> <i>font</i></code></dd>

    <dd><code><b><a href="#cell_foreground">-foreground</a></b>
    <i>color</i></code>&nbsp; or&nbsp; <code><b>-fg</b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#cell_image">-image</a></b> <i>image</i></code></dd>

    <dd><code><b><a href="#cell_selectbackground">-selectbackground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#cell_selectforeground">-selectforeground</a></b>
    <i>color</i></code></dd>

    <dd><code><b><a href="#cell_stretchwindow">-stretchwindow</a></b>
    <i>boolean</i></code></dd>

    <dd><code><b><a href="#cell_text">-text</a></b> <i>text</i></code></dd>

    <dd><code><b><a href="#cell_valign">-valign</a></b>
    <b>center</b>|<b>top</b>|<b>bottom</b></code></dd>

    <dd><code><b><a href="#cell_window">-window</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#cell_windowdestroy">-windowdestroy</a></b>
    <i>command</i></code></dd>

    <dd><code><b><a href="#cell_windowupdate">-windowupdate</a></b>
    <i>command</i></code></dd>

    <dt class="tm"><a href="#description">DESCRIPTION</a></dt>

    <dt class="tm"><a href="#colors_and_fonts">COLORS AND FONTS</a></dt>

    <dt class="tm"><a href="#tree_widget">USING A TABLELIST AS MULTI-COLUMN
    TREE WIDGET</a></dt>

    <dt class="tm"><a href="#cell_editing">INTERACTIVE CELL EDITING</a></dt>

    <dt class="tm"><a href="#virtual_events">VIRTUAL EVENTS</a></dt>

    <dt class="tm"><a href="#row_indices">ROW INDICES</a></dt>

    <dd>
      <pre>
<i>number</i>  <b>k</b><i>number</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <b>top</b>  <b>bottom</b>  <b>@</b><i>x</i><b>,</b><i>y</i>  <i>name</i>
</pre>
    </dd>

    <dt><a href="#node_indices">NODE INDICES</a></dt>

    <dd>
      <pre>
<b>root</b>  <i>number</i>  <b>k</b><i>number</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <b>top</b>  <b>bottom</b>  <b>@</b><i>x</i><b>,</b><i>y</i>  <i>name</i>
</pre>
    </dd>

    <dt><a href="#col_indices">COLUMN INDICES</a>&gt;</dt>

    <dd>
      <pre>
<i>number</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <b>left</b>  <b>right</b>  <b>@</b><i>x</i><b>,</b><i>y</i>  <i>name</i>
</pre>
    </dd>

    <dt><a href="#cell_indices">CELL INDICES</a></dt>

    <dd>
      <pre>
<i>row</i><b>,</b><i>col</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <b>@</b><i>x</i><b>,</b><i>y</i>

    <i>row</i>: <i>number</i>  <b>k</b><i>number</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <b>top</b>  <b>bottom</b>  <i>name</i>
    <i>col</i>: <i>number</i>  <b>active</b>  <b>anchor</b>  <b>end</b>  <b>left</b>  <b>right</b>  <i>name</i>
</pre>
    </dd>

    <dt><a href="#widget_command">WIDGET COMMAND</a></dt>

    <dd><code><i>pathName</i> <b><a href="#activate">activate</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#activatecell">activatecell</a></b>
    <i>cellIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#applysorting">applysorting</a></b>
    <i>itemList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#attrib">attrib</a></b> ?<i>name</i>?
    ?<i>value</i> <i>name</i> <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#bbox">bbox</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#bodypath">bodypath</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#bodytag">bodytag</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#canceledediting">canceledediting</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#cancelediting">cancelediting</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#cellattrib">cellattrib</a></b>
    <i>cellIndex</i> ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i>
    ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#cellbbox">cellbbox</a></b>
    <i>cellIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#cellcget">cellcget</a></b>
    <i>cellIndex</i> <i>option</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#cellconfigure">cellconfigure</a></b>
    <i>cellIndex</i> ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i>
    ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#cellindex">cellindex</a></b>
    <i>cellIndex</i></code></dd>

    <dd>
      <code><i>pathName</i> <b><a href="#cellselection">cellselection</a></b>
      <i>option</i> <i>args</i></code>

      <dl>
        <dd><code><i>pathName</i> <b>cellselection</b> <b>anchor</b>
        <i>cellIndex</i></code></dd>

        <dd><code><i>pathName</i> <b>cellselection</b> <b>clear</b>
        <i>firstCell</i> <i>lastCell</i></code></dd>

        <dd><code><i>pathName</i> <b>cellselection</b> <b>clear</b>
        <i>cellIndexList</i></code></dd>

        <dd><code><i>pathName</i> <b>cellselection</b> <b>includes</b>
        <i>cellIndex</i></code></dd>

        <dd><code><i>pathName</i> <b>cellselection</b> <b>set</b>
        <i>firstCell</i> <i>lastCell</i></code></dd>

        <dd><code><i>pathName</i> <b>cellselection</b> <b>set</b>
        <i>cellIndexList</i></code></dd>
      </dl>
    </dd>

    <dd><code><i>pathName</i> <b><a href="#cget">cget</a></b>
    <i>option</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#childcount">childcount</a></b>
    <i>nodeIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#childindex">childindex</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#childkeys">childkeys</a></b>
    <i>nodeIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#collapse">collapse</a></b>
    <i>index</i> ?<b>-fully</b>|<b>-partly</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#collapseall">collapseall</a></b>
    ?<b>-fully</b>|<b>-partly</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#columnattrib">columnattrib</a></b>
    <i>columnIndex</i> ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i>
    ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#columncget">columncget</a></b>
    <i>columnIndex</i> <i>option</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#columnconfigure">columnconfigure</a></b> <i>columnIndex</i>
    ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#columncount">columncount</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#columnindex">columnindex</a></b>
    <i>columnIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#columnwidth">columnwidth</a></b>
    <i>columnIndex</i>
    ?<b>-requested</b>|<b>-stretched</b>|<b>-total</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#configcelllist">configcelllist</a></b> {<i>cellIndex</i> <i>option</i>
    <i>value</i> <i>cellIndex</i> <i>option</i> <i>value</i> ...}</code></dd>

    <dd><code><i>pathName</i> <b><a href="#configcells">configcells</a></b>
    ?<i>cellIndex</i> <i>option</i> <i>value</i> <i>cellIndex</i> <i>option</i>
    <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#configcolumnlist">configcolumnlist</a></b> {<i>columnIndex</i>
    <i>option</i> <i>value</i> <i>columnIndex</i> <i>option</i> <i>value</i>
    ...}</code></dd>

    <dd><code><i>pathName</i> <b><a href="#configcolumns">configcolumns</a></b>
    ?<i>columnIndex</i> <i>option</i> <i>value</i> <i>columnIndex</i>
    <i>option</i> <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#configrowlist">configrowlist</a></b>
    {<i>index</i> <i>option</i> <i>value</i> <i>index</i> <i>option</i>
    <i>value</i> ...}</code></dd>

    <dd><code><i>pathName</i> <b><a href="#configrows">configrows</a></b>
    ?<i>index</i> <i>option</i> <i>value</i> <i>index</i> <i>option</i>
    <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#configure">configure</a></b>
    ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#containing">containing</a></b>
    <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#containingcell">containingcell</a></b> <i>x</i> <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#containingcolumn">containingcolumn</a></b> <i>x</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#cornerlabelpath">cornerlabelpath</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#cornerpath">cornerpath</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#curcellselection">curcellselection</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#curselection">curselection</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#delete">delete</a></b> <i>first</i>
    <i>last</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#delete">delete</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#deletecolumns">deletecolumns</a></b>
    <i>firstColumn</i> <i>lastColumn</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#deletecolumns">deletecolumns</a></b>
    <i>columnIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#depth">depth</a></b>
    <i>nodeIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#descendantcount">descendantcount</a></b> <i>nodeIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#editcell">editcell</a></b>
    <i>cellIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#editinfo">editinfo</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#editwinpath">editwinpath</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#editwintag">editwintag</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#entrypath">entrypath</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#expand">expand</a></b> <i>index</i>
    ?<b>-fully</b>|<b>-partly</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#expandall">expandall</a></b>
    ?<b>-fully</b>|<b>-partly</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#expandedkeys">expandedkeys</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#fillcolumn">fillcolumn</a></b>
    <i>columnIndex</i> <i>text</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#findcolumnname">findcolumnname</a></b> <i>name</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#findrowname"> findrowname</a></b>
    <i>name</i> ?<b>-descend</b>? ?<b>-parent</b> <i>nodeIndex</i>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#finishediting">finishediting</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#formatinfo">formatinfo</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#get">get</a></b> <i>first</i>
    <i>last</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#get">get</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getcells">getcells</a></b>
    <i>firstCell</i> <i>lastCell</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getcells">getcells</a></b>
    <i>cellIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getcolumns">getcolumns</a></b>
    <i>firstColumn</i> <i>lastColumn</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getcolumns">getcolumns</a></b>
    <i>columnIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getformatted">getformatted</a></b>
    <i>first</i> <i>last</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getformatted">getformatted</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#getformattedcells">getformattedcells</a></b> <i>firstCell</i>
    <i>lastCell</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#getformattedcells">getformattedcells</a></b>
    <i>cellIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#getformattedcolumns">getformattedcolumns</a></b> <i>firstColumn</i>
    <i>lastColumn</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#getformattedcolumns">getformattedcolumns</a></b>
    <i>columnIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getfullkeys">getfullkeys</a></b>
    <i>first</i> <i>last</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getfullkeys">getfullkeys</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getkeys">getkeys</a></b>
    <i>first</i> <i>last</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#getkeys">getkeys</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#hasattrib">hasattrib</a></b>
    <i>name</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#hascellattrib">hascellattrib</a></b>
    <i>cellIndex</i> <i>name</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#hascolumnattrib">hascolumnattrib</a></b> <i>columnIndex</i>
    <i>name</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#hasrowattrib">hasrowattrib</a></b>
    <i>index</i> <i>name</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#imagelabelpath">imagelabelpath</a></b> <i>cellIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#index">index</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#insert">insert</a></b> <i>index</i>
    ?<i>item</i> <i>item</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#insertchildlist">insertchildlist</a></b> <i>parentNodeIndex</i>
    <i>childIndex</i> <i>itemList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#insertchildren">insertchild(ren)</a></b> <i>parentNodeIndex</i>
    <i>childIndex</i> ?<i>item</i> <i>item</i> ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#insertcolumnlist">insertcolumnlist</a></b> <i>columnIndex</i>
    {<i>width</i> <i>title</i> ?<b>left</b>|<b>right</b>|<b>center</b>?
    <i>width</i> <i>title</i> ?<b>left</b>|<b>right</b>|<b>center</b>?
    ...}</code></dd>

    <dd><code><i>pathName</i> <b><a href="#insertcolumns">insertcolumns</a></b>
    <i>columnIndex</i> ?<i>width</i> <i>title</i>
    ?<b>left</b>|<b>right</b>|<b>center</b>? <i>width</i> <i>title</i>
    ?<b>left</b>|<b>right</b>|<b>center</b>? ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#insertlist">insertlist</a></b>
    <i>index</i> <i>itemList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#iselemsnipped">iselemsnipped</a></b>
    <i>cellIndex</i> <i>fullTextName</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#isexpanded">isexpanded</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#istitlesnipped">istitlesnipped</a></b> <i>columnIndex</i>
    <i>fullTextName</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#isviewable">isviewable</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#itemlistvar">itemlistvar</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#labelpath">labelpath</a></b>
    <i>columnIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#labels">labels</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#labeltag">labeltag</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#move">move</a></b>
    <i>sourceIndex</i> <i>targetIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#move">move</a></b>
    <i>sourceIndex</i> <i>targetParentNodeIndex</i>
    <i>targetChildIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#movecolumn">movecolumn</a></b>
    <i>sourceColumn</i> <i>targetColumn</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#nearest">nearest</a></b>
    <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#nearestcell">nearestcell</a></b>
    <i>x</i> <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#nearestcolumn">nearestcolumn</a></b>
    <i>x</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#noderow">noderow</a></b>
    <i>parentNodeIndex</i> <i>childIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#parentkey">parentkey</a></b>
    <i>nodeIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#refreshsorting">refreshsorting</a></b>
    ?<i>parentNodeIndex</i>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#rejectinput">rejectinput</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#resetsortinfo">resetsortinfo</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#rowattrib">rowattrib</a></b>
    <i>index</i> ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i>
    ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#rowcget">rowcget</a></b>
    <i>index</i> <i>option</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#rowconfigure">rowconfigure</a></b>
    <i>index</i> ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i>
    ...?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#scan">scan</a></b>
    <b>mark</b>|<b>dragto</b> <i>x</i> <i>y</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#searchcolumn">searchcolumn</a></b>
    <i>columnIndex</i> <i>pattern</i> ?<i>options</i>?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#see">see</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#seecell">seecell</a></b>
    <i>cellIndex</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#seecolumn">seecolumn</a></b>
    <i>columnIndex</i></code></dd>

    <dd>
      <code><i>pathName</i> <b><a href="#selection">selection</a></b>
      <i>option</i> <i>args</i></code>

      <dl>
        <dd><code><i>pathName</i> <b>selection</b> <b>anchor</b>
        <i>index</i></code></dd>

        <dd><code><i>pathName</i> <b>selection</b> <b>clear</b> <i>first</i>
        <i>last</i></code></dd>

        <dd><code><i>pathName</i> <b>selection</b> <b>clear</b>
        <i>indexList</i></code></dd>

        <dd><code><i>pathName</i> <b>selection</b> <b>includes</b>
        <i>index</i></code></dd>

        <dd><code><i>pathName</i> <b>selection</b> <b>set</b> <i>first</i>
        <i>last</i></code></dd>

        <dd><code><i>pathName</i> <b>selection</b> <b>set</b>
        <i>indexList</i></code></dd>
      </dl>
    </dd>

    <dd><code><i>pathName</i> <b><a href="#separatorpath">separatorpath</a></b>
    ?<i>columnIndex</i>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#separators">separators</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#size">size</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href="#sort">sort</a></b>
    ?<b>-increasing</b>|<b>-decreasing</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#sortbycolumn">sortbycolumn</a></b>
    <i>columnIndex</i> ?<b>-increasing</b>|<b>-decreasing</b>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortbycolumnlist">sortbycolumnlist</a></b> <i>columnIndexList</i>
    ?<i>sortOrderList</i>?</code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortcolumn">sortcolumn</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortcolumnlist">sortcolumnlist</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortorder">sortorder</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#sortorderlist">sortorderlist</a></b></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#togglecolumnhide">togglecolumnhide</a></b> <i>firstColumn</i>
    <i>lastColumn</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#togglecolumnhide">togglecolumnhide</a></b>
    <i>columnIndexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#togglerowhide">togglerowhide</a></b>
    <i>first</i> <i>last</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#togglerowhide">togglerowhide</a></b>
    <i>indexList</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#toplevelkey">toplevelkey</a></b>
    <i>index</i></code></dd>

    <dd><code><i>pathName</i> <b><a href="#unsetattrib">unsetattrib</a></b>
    <i>name</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#unsetcellattrib">unsetcellattrib</a></b> <i>cellIndex</i>
    <i>name</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#unsetcolumnattrib">unsetcolumnattrib</a></b> <i>columnIndex</i>
    <i>name</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#unsetrowattrib">unsetrowattrib</a></b> <i>index</i>
    <i>name</i></code></dd>

    <dd><code><i>pathName</i> <b><a href=
    "#viewablerowcount">viewablerowcount</a></b> ?<i>first</i>
    <i>last</i>?</code></dd>

    <dd><code><i>pathName</i> <b><a href="#windowpath">windowpath</a></b>
    <i>cellIndex</i></code></dd>

    <dd>
      <code><i>pathName</i> <b><a href="#xview">xview</a></b>
      <i>args</i></code>

      <dl>
        <dd><code><i>pathName</i> <b>xview</b></code></dd>

        <dd><code><i>pathName</i> <b>xview</b> <i>units</i></code></dd>

        <dd><code><i>pathName</i> <b>xview</b> <b>moveto</b>
        <i>fraction</i></code></dd>

        <dd><code><i>pathName</i> <b>xview</b> <b>scroll</b> <i>number</i>
        <b>units</b>|<b>pages</b></code></dd>
      </dl>
    </dd>

    <dd>
      <code><i>pathName</i> <b><a href="#yview">yview</a></b>
      <i>args</i></code>

      <dl>
        <dd><code><i>pathName</i> <b>yview</b></code></dd>

        <dd><code><i>pathName</i> <b>yview</b> <i>units</i></code></dd>

        <dd><code><i>pathName</i> <b>yview</b> <b>moveto</b>
        <i>fraction</i></code></dd>

        <dd><code><i>pathName</i> <b>yview</b> <b>scroll</b> <i>number</i>
        <b>units</b>|<b>pages</b></code></dd>
      </dl>
    </dd>

    <dt class="tm"><a href="#body_bindings">DEFAULT AND INDIVIDUAL BINDINGS FOR
    THE TABLELIST BODY</a></dt>

    <dt class="tm"><a href="#label_bindings">DEFAULT AND INDIVIDUAL BINDINGS
    FOR THE HEADER LABELS</a></dt>

    <dt class="tm"><a href="#edit_bindings">DEFAULT BINDINGS FOR INTERACTIVE
    CELL EDITING</a></dt>

    <dt class="tm"><a href="#keywords">KEYWORDS</a></dt>

    <dd>tablelist, multi-column, listbox, tree, widget</dd>
  </dl>

  <div align="center">
    <p><a href="#contents">Contents</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href=
    "index.html">Start page</a></p>
  </div>
  <hr>

  <h2 id="detailed_ref">Detailed Reference</h2>

  <dl>
    <dt id="name"><b>NAME</b></dt>

    <dd><code>tablelist::tablelist</code> &ndash; Create and manipulate
    tablelist widgets</dd>

    <dt class="tm" id="synopsis"><b>SYNOPSIS</b></dt>

    <dd>
      <pre>
<b>tablelist::tablelist</b> <i>pathName</i> ?<i>options</i>?
</pre>
    </dd>

    <dt id="std_options"><b>STANDARD OPTIONS</b></dt>

    <dd>
      <pre>
<b>-borderwidth          -highlightthickness  -setgrid
-cursor               -relief              -xscrollcommand
-exportselection      -selectbackground    -yscrollcommand
-highlightbackground  -selectborderwidth
-highlightcolor       -selectforeground</b>
</pre>
    </dd>

    <dd>See the <b>options</b> manual entry for details on the standard
    options.&nbsp; The <code><b>-highlightbackground</b></code>,
    <code><b>-highlightcolor</b></code>, and
    <code><b>-highlightthickness</b></code> options are only supported by the
    Tablelist package, but not by Tablelist_tile.&nbsp; When using the package
    Tablelist_tile, the options <code><b>-selectbackground</b></code>,
    <code><b>-selectborderwidth</b></code>, and
    <code><b>-selectforeground</b></code> have theme-specific default
    values.</dd>

    <dt class="tm" id="body_options"><b>OPTIONS FOR THE BODY COMPONENT OF THE
    WIDGET</b></dt>

    <dd>
      <pre>
<b>-background  -disabledforeground  -font  -foreground</b>
</pre>
    </dd>

    <dd>These options (described in the <b>options</b> manual entry) are only
    valid for the body component of the tablelist widget.&nbsp; As discussed in
    the next section, the colors and font used when drawing the header labels
    can be different from those specified for the body.&nbsp; When using the
    package Tablelist_tile, these options have theme-specific default
    values.</dd>

    <dt class="tm" id="widget_options"><b>WIDGET-SPECIFIC OPTIONS</b></dt>

    <dd class="tm" id="acceptchildcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-acceptchildcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;acceptChildCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;AcceptChildCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a Tcl command used to decide whether a given tablelist
        node may accept a specified item being <a href="#drag_and_drop">moved
        interactively</a> as a child.&nbsp; The specified command is
        automatically concatenated with the name of the tablelist widget, the
        node index of the would-be new parent node, and the row index of the
        dragged item, the resulting script is evaluated in the global scope,
        and the return value (which must be a boolean) will determine whether
        to allow to move the source item to the current mouse position as a
        child of the given parent node.</p>

        <p>For example, in the case of a tablelist widget used as a file
        manager, in which the top-level items represent volumes mounted on the
        system, the command specified by this option might look like in the
        (pseudo-)code below:</p>

        <blockquote>
          <pre>
proc acceptChildCmd {tbl targetParentNodeIdx sourceRow} {
    if {[string compare $targetParentNodeIdx "root"] == 0} {
        # Allow only volumes as top-level items
        return [expr {[$tbl depth $sourceRow] == 1}]
    } else {
        # Allow only directories as parent items
        return [<i>$targetParentNodeIdx represents a directory</i>]
    }
}
</pre>
        </blockquote>

        <p>For technical reasons (the use of the <code><b>-elide</b></code>
        text widget tag option for collapsing a row), this option is not
        supported for Tk versions earlier than 8.3.</p>
      </blockquote>
    </dd>

    <dd id="acceptdropcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-acceptdropcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;acceptDropCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;AcceptDropCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a Tcl command used to decide whether a given tablelist row
        may accept a specified item being <a href="#drag_and_drop">moved
        interactively</a> to be dropped as a sibling just before that
        row.&nbsp; The specified command is automatically concatenated with the
        name of the tablelist widget, the row index of the would-be new target,
        and the row index of the dragged item, the resulting script is
        evaluated in the global scope, and the return value (which must be a
        boolean) will determine whether to allow to move the source item to the
        current mouse position, just before the given row.</p>

        <p>For example, to make sure that the position of the last row of a
        tablelist widget won't be affected by the interactive row move
        operation, the command specified by this option might look like in the
        code below:</p>

        <blockquote>
          <pre>
proc acceptDropCmd {tbl targetRow sourceRow} {
    set rowCount [[$tbl size]
    return [expr {$sourceRow != $rowCount - 1 &amp;&amp; $targetRow &lt; $rowCount}]
}
</pre>
        </blockquote>
      </blockquote>
    </dd>

    <dd id="activestyle">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-activestyle</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;activeStyle</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ActiveStyle</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies how to diplay the active item or element (depending on the
        value of the <code><b><a href="#selecttype">-selecttype</a></b></code>
        configuration option) when the tablelist has the keyboard focus.&nbsp;
        The allowed values are <code><b>frame</b></code>,
        <code><b>none</b></code>, and <code><b>underline</b></code>.&nbsp; The
        default value <code><b>frame</b></code> shows a thin frame around the
        active item or element, which in most cases looks nice.&nbsp; It looks
        less pretty when applied to the active item if the background color of
        some of its cells was changed by using the <code><b><a href=
        "#columnconfigure">columnconfigure</a></b></code> or <code><b><a href=
        "#cellconfigure">cellconfigure</a></b></code> widget command and no
        column separators are shown.&nbsp; The value <code><b>none</b></code>
        specifies that no special indication of the active item or element is
        to be performed.&nbsp; The value <code><b>underline</b></code> produces
        the same visual effect as in the case of the Tk core listbox.</p>
      </blockquote>
    </dd>

    <dd id="arrowcolor">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-arrowcolor</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;arrowColor</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ArrowColor</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the color to use for the up- or down-arrow placed into a
        column label by the <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommand of the
        Tcl command associated with the widget.&nbsp; This option is only
        relevant if the value of the <code><b><a href=
        "#showarrow">-showarrow</a></b></code> option is true.&nbsp; The
        default value depends on the windowing system in the Tablelist package
        and on the current theme in Tablelist_tile.&nbsp; For example, if the
        windowing system is <code><b>x11</b></code> then the default is an
        empty string, indicating that the arrow will inherit the background
        color of the label in which it is placed (but is distinguishable from
        the latter, due to its 3-D border and sunken relief, because in this
        case the <code><b><a href="#arrowstyle">-arrowstyle</a></b></code>
        option has the default value <code><b>sunken10x9</b></code>).&nbsp; On
        the windowing system <code><b>win32</b></code>, the default arrow color
        is <code>#aca899</code> for Windows XP, <code>#569bc0</code> for
        Windows Vista and Windows 7, and an empty string for older Windows
        versions, paired with the default arrow style
        <code><b>flat9x5</b></code>, <code><b>flat7x4</b></code>, and
        <code><b>sunken8x7</b></code>, respectively.&nbsp; Finally, for the
        windowing systems <code><b>classic</b></code> and
        <code><b>aqua</b></code> on the Macintosh, the default arrow color is
        <code>#717171</code> and the default arrow style is
        <code><b>flat7x7</b></code>.</p>
      </blockquote>
    </dd>

    <dd id="arrowdisabledcolor">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-arrowdisabledcolor</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;arrowDisabledColor</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ArrowDisabledColor</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the color to use for the up- or down-arrow placed into a
        column label by the <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommand of the
        Tcl command associated with the widget when the tablelist's
        <code><b><a href="#state">state</a></b></code> is
        <code><b>disabled</b></code>.&nbsp; This option is only relevant if the
        value of the <code><b><a href="#showarrow">-showarrow</a></b></code>
        option is true.&nbsp; When the default value of the <code><b><a href=
        "#arrowcolor">-arrowcolor</a></b></code> option is an empty string then
        this is the default for the <code><b>-arrowdisabledcolor</b></code>
        option, too; otherwise the latter's default value equals the default
        foreground color of the header labels in <code><b>disabled</b></code>
        state.</p>
      </blockquote>
    </dd>

    <dd id="arrowstyle">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-arrowstyle</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;arrowStyle</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ArrowStyle</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the relief, width, and height of the up- or down-arrow
        placed into a column label by the <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommand of the
        Tcl command associated with the widget.&nbsp; This option is only
        relevant if the value of the <code><b><a href=
        "#showarrow">-showarrow</a></b></code> option is true.&nbsp; The
        currently supported values are <code><b>flat6x4</b></code>,
        <code><b>flat7x4</b></code>, <code><b>flat7x5</b></code>,
        <code><b>flat7x7</b></code>, <code><b>flat8x5</b></code>,
        <code><b>flat9x5</b></code>, <code><b>flat9x6</b></code>,
        <code><b>flat9x7</b></code>, <code><b>flat10x6</b></code>,
        <code><b>photo7x7</b></code>, <code><b>sunken8x7</b></code>,
        <code><b>sunken10x9</b></code>, and <code><b>sunken12x11</b></code>, as
        shown in the picture below.&nbsp; The default value depends on the
        windowing system in the Tablelist package and on the current theme in
        Tablelist_tile; see the description of the <code><b><a href=
        "#arrowcolor">-arrowcolor</a></b></code> option for details.</p>

        <p><img src="arrowStyles.png" alt="Arrow Styles" width="560" height=
        "57"></p>

        <p>While the sort arrows of the styles <code><b>flat*</b></code> and
        <code><b>sunken*</b></code> are created from bitmaps, the arrow style
        <code><b>photo7x7</b></code> uses PNG images that look and behave very
        close to the native sort arrows on Mac OS X Aqua.&nbsp; This arrow
        style is only supported if the Tk version is either 8.6 (with built-in
        PNG support), or 8.5 and the <code><b>img::png</b></code> package can
        be loaded into the interpreter.&nbsp; When supported,
        <code><b>photo7x7</b></code> will be the default value of the
        <code><b>-arrowstyle</b></code> option in Tablelist_tile with the
        <code><b>aqua</b></code> theme (otherwise <code><b>flat7x7</b></code>
        will be used as default).&nbsp; When using this arrow style, the
        <code><b><a href="#arrowcolor">-arrowcolor</a></b></code> and
        <code><b><a href=
        "#arrowdisabledcolor">-arrowdisabledcolor</a></b></code> options have
        no effect, but, due to the transparency information contained in the
        PNG images, the arrows will automatically adapt their color to the
        various states of the header labels, just like the native sort
        arrows.</p>
      </blockquote>
    </dd>

    <dd id="autoscan">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-autoscan</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;autoScan</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;AutoScan</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that controls whether to trigger the
        automatic scrolling when the mouse leaves the tablelist window with
        button 1 down.&nbsp; The default is <code>1</code>, meaning that
        automatic scrolling will be in effect, just like in the case of the Tk
        listbox widget.&nbsp; However, when using the tkdnd package, you might
        want to set this option to <code>0</code>, in order to avoid any
        conflicts between the drag &amp; drop and the automatic scrolling.</p>
      </blockquote>
    </dd>

    <dd id="collapsecommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-collapsecommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;collapseCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;CollapseCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a Tcl command to be invoked when collapsing a row of a
        tablelist used as a tree widget (with the aid of the <code><b><a href=
        "#collapse">collapse</a></b></code> or <code><b><a href=
        "#collapseall">collapseall</a></b></code> subcommand).&nbsp; The
        specified command is automatically concatenated with the name of the
        tablelist widget and the row index, and the resulting script is
        evaluated in the global scope, before hiding the descendants of the row
        in question.</p>

        <p>For technical reasons (the use of the <code><b>-elide</b></code>
        text widget tag option for collapsing a row), this option is not
        supported for Tk versions earlier than 8.3.</p>
      </blockquote>
    </dd>

    <dd id="columns">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-columns</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;columns</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Columns</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the widths, titles, and alignments of the columns.&nbsp;
        The option's value must be a list of the form</p>

        <blockquote>
          <pre>
<i>width</i> <i>title</i> ?<i>alignment</i>? <i>width</i> <i>title</i> ?<i>alignment</i>? ...
</pre>
        </blockquote>

        <p>Each <code><i>width</i></code> must be a number.&nbsp; A positive
        value specifies the column's width in average-size characters of the
        widget's font.&nbsp; If <code><i>width</i></code> is negative, its
        absolute value is interpreted as a column width in pixels.&nbsp;
        Finally, a value of zero specifies that the column's width is to be
        made just large enough to hold all the elements in the column,
        including its header (but no larger than the maximum width indicated by
        the <code><b><a href="#col_maxwidth">-maxwidth</a></b></code> column
        configuration option).&nbsp; In all three cases, the effective column
        width will be somewhat greater because of the margins created
        automatically to the left and right of the column.</p>

        <p>Each <code><i>title</i></code> specifies the text to be displayed in
        the column's header, and may optionally be followed in the next list
        element by an <code><i>alignment</i></code>, which specifies how to
        align the elements of the column.&nbsp; Each
        <code><i>alignment</i></code> must be one of <code><b>left</b></code>,
        <code><b>right</b></code>, or <code><b>center</b></code>.&nbsp; The
        default is <code><b>left</b></code>.&nbsp; The
        <code><i>alignment</i></code> also refers to the column's title as long
        as the <code><b><a href="#col_labelalign">-labelalign</a></b></code>
        option hasn't been specified for that column, or if its value is an
        empty string.</p>

        <p>The default value of this option is an empty list, specifying that
        initially the widget has no columns.</p>

        <p><b>REMARK:</b>&nbsp; Columns whose width was specified as zero are
        called <b>dynamic-width</b> columns.&nbsp; In general, they are more
        user-friendly than their <b>static-width</b> counterparts, being that
        their widths are automatically adapted to their contents.&nbsp; On the
        other hand, the static-width columns perform significantly better on
        item insertion and sorting than the dynamic-width ones, due to some
        optimizations introduced in Tablelist version 5.6.&nbsp; (Prior to that
        release, the above-mentioned operations were faster with dynamic-width
        columns than with static-width ones.)</p>
      </blockquote>
    </dd>

    <dd id="columntitles">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-columntitles</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;columnTitles</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ColumnTitles</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>This option provides a simplified form of specifying dynamic-width,
        left-aligned tablelist columns.&nbsp; Its value is viewed as a list of
        column titles.&nbsp; The default is an empty list.</p>

        <p>In the simplest case that no columns have been specified yet,
        setting this option to the value given by the list</p>

        <blockquote>
          <pre>
<i>title</i> <i>title</i> ...
</pre>
        </blockquote>

        <p>is equivalent to setting the <code><b><a href=
        "#columns">-columns</a></b></code> option to the value given by the
        list</p>

        <blockquote>
          <pre>
0 <i>title</i> left 0 <i>title</i> left ...
</pre>
        </blockquote>

        <p>If the columns have already been specified then this option updates
        their titles (as many of them as possible) and, if the number of
        elements of its value is greater than the number of columns then it
        uses the remaining elements as titles of additional dynamic-width,
        left-aligned columns.&nbsp; For example, if the widget has 3 columns
        and the option's value is a list of length 5 then the option will
        update the titles of the 3 columns and will append 2 new dynamic-width,
        left-aligned columns having as titles the last 2 elements of the
        list.&nbsp; If the widget has 3 columns and the option specifies just 2
        texts then it will update the titles of the first 2 columns only.</p>
      </blockquote>
    </dd>

    <dd id="editendcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-editendcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;editEndCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;EditEndCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a Tcl command to be invoked on normal termination of the
        interactive editing of a cell's contents if the final text of the
        temporary embedded widget used for the editing is different from its
        initial one.&nbsp; The command is automatically concatenated with the
        name of the tablelist widget, the cell's row and column indices, as
        well as the final contents of the edit window, the resulting script is
        evaluated in the global scope, and the return value becomes the cell's
        new contents after destroying the temporary embedded widget.&nbsp; The
        main purpose of this script is to perform a final validation of the
        edit window's contents.&nbsp; See the description of the
        <code><b><a href=
        "#forceeditendcommand">-forceeditendcommand</a></b></code> option for
        more about the invocation of the command mentioned above, as well as
        the <a href="#cell_editing">INTERACTIVE CELL EDITING</a> section for
        details on the editing process.</p>
      </blockquote>
    </dd>

    <dd id="editselectedonly">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-editselectedonly</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;editSelectedOnly</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;EditSelectedOnly</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that controls whether to start the
        interactive cell editing when mouse button 1 is pressed in an editable
        cell.&nbsp; If this value is true then the editing will only be started
        if the cell has previously been selected (interactively or
        programmatically).&nbsp; In this case, a first left-click will usually
        just select the cell (or its row, depending on the value of the
        <code><b><a href="#selecttype">-selecttype</a></b></code> option), and
        a second mouse click will start the editing session.&nbsp; The default
        is <code>0</code>, meaning that the editing will be started regardless
        of whether the cell is selected or not.</p>
      </blockquote>
    </dd>

    <dd id="editstartcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-editstartcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;editStartCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;EditStartCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a Tcl command to be invoked when the interactive editing
        of a cell's contents is started.&nbsp; The command is automatically
        concatenated with the name of the tablelist widget, the cell's row and
        column indices, as well as the text displayed in the cell, the
        resulting script is evaluated in the global scope, and the return value
        becomes the initial contents of the temporary embedded widget used for
        the editing.&nbsp; The main purpose of this script is to define
        validations for the edit window's contents.&nbsp; See the <a href=
        "#cell_editing">INTERACTIVE CELL EDITING</a> section for details on the
        editing process.</p>
      </blockquote>
    </dd>

    <dd id="expandcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-expandcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;expandCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ExpandCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a Tcl command to be invoked when expanding a row of a
        tablelist used as a tree widget (with the aid of the <code><b><a href=
        "#expand">expand</a></b></code> or <code><b><a href=
        "#expandall">expandall</a></b></code> subcommand).&nbsp; The specified
        command is automatically concatenated with the name of the tablelist
        widget and the row index, and the resulting script is evaluated in the
        global scope, before displaying the children of the row in
        question.</p>

        <p>For technical reasons (the use of the <code><b>-elide</b></code>
        text widget tag option for collapsing a row), this option is not
        supported for Tk versions earlier than 8.3.</p>

        <p><b>REMARK:</b>&nbsp; It is common practice to use the command
        specified as the value of this option to insert the children of the row
        that is about to be expanded, if it has no children yet.&nbsp; For
        example, the <a href="tablelist.html#ex_dirViewer">Directory Viewer</a>
        demo script uses the command implemented as follows:</p>

        <blockquote>
          <pre>
proc expandCmd {tbl row} {
    if {[$tbl childcount $row] == 0} {
        # Get the name of the directory whose leaf name is
        # displayed in the first cell of the specified row
        set dir [$tbl rowattrib $row pathName]

        # Display the contents of the directory $dir
        # as child items of the one identified by $row
        putContents $dir $tbl $row
    }

    # The rest is just eye candy:
    if {[$tbl childcount $row] != 0} {
        # Update the image displayed in the row's first cell
        $tbl cellconfigure $row,0 -image openFolderImg
    }
}
</pre>
        </blockquote>
      </blockquote>
    </dd>

    <dd id="forceeditendcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-forceeditendcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;forceEditEndCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ForceEditEndCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that controls the invocation of the
        command given by the the <code><b><a href=
        "#editendcommand">-editendcommand</a></b></code> option.&nbsp; If this
        value is true then the command will be invoked on normal termination of
        the editing process even if the final text of the temporary embedded
        widget used for the editing equals its initial one, and will also be
        invoked when the interactive cell editing is canceled (in the latter
        case, the text passed to it as last argument will be the cell's
        original contents, not its final one).&nbsp; The default value of this
        option is <code>0</code>, meaning that the command will only be invoked
        on normal termination of the editing process, if the final text of the
        temporary embedded widget is different from its initial one.&nbsp; See
        the <a href="#cell_editing">INTERACTIVE CELL EDITING</a> section for
        details on the editing process.</p>

        <p>If the option's value is true and no value for the
        <code><b>-editendcommand</b></code> option was specified, then on
        normal termination of the editing process the cell's new contents will
        be set to the text contained in the edit window, even if it has not
        been changed interactively (but might have been returned by the command
        given by the the <code><b><a href=
        "#editstartcommand">-editstartcommand</a></b></code> option).</p>

        <p>Setting this option to true enables you to execute an arbitrary
        action whenever the interactive cell editing is finished.&nbsp; Just
        binding a script to the <code><b>&lt;Destroy&gt;</b></code> event for
        the temporary embedded widget used for the editing won't work, because
        that widget might be destroyed and recreated automatically under
        various circumstances.&nbsp; Alternately, you can use the
        <code><b>&lt;&lt;TablelistCellUpdated&gt;&gt;</b></code> and
        <code><b>&lt;&lt;TablelistCellRestored&gt;&gt;</b></code> virtual
        events, generated by the <code><b><a href=
        "#finishediting">finishediting</a></b></code> and <code><b><a href=
        "#cancelediting">cancelediting</a></b></code> subcommands,
        respectively.</p>
      </blockquote>
    </dd>

    <dd id="fullseparators">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-fullseparators</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;fullSeparators</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;FullSeparators</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that controls whether the separators (if
        any) shall extend all of the way to the bottom of the tablelist's
        body.&nbsp; The default is <code>0</code>, meaning that the height of
        the separators will be adjusted to the widget's content, i.e., they
        won't extend to the bottom of the tablelist's body if there is free
        vertical space left below the widget's last row.</p>
      </blockquote>
    </dd>

    <dd id="height">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-height</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;height</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Height</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the desired height for the window, in lines.&nbsp; If zero
        or less then the desired height for the window is made just large
        enough to hold the header and all the items in the tablelist widget,
        provided that no column-, row-, or cell-specific fonts are used and no
        embedded images or windows are displayed in the widget's cells.</p>
      </blockquote>
    </dd>

    <dd id="incrarrowtype">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-incrarrowtype</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;incrArrowType</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;IncrArrowType</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the type of the arrow placed into a column label when
        sorting the items based on that column in increasing order, with the
        aid of the <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code>
        or <code><b><a href="#sortbycolumnlist">sortbycolumnlist</a></b></code>
        subcommand of the Tcl command associated with the widget.&nbsp; The
        value of this option must be one of <code><b>up</b></code> or
        <code><b>down</b></code>.&nbsp; The default is
        <code><b>up</b></code>.&nbsp; This option is only relevant if the value
        of the <code><b><a href="#showarrow">-showarrow</a></b></code> option
        is true.</p>
      </blockquote>
    </dd>

    <dd id="instanttoggle">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-instanttoggle</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;instantToggle</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;InstantToggle</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that controls whether the interactive cell
        editing with the aid of a Tk or tile checkbutton widget, if started
        with the left mouse button, will be finished immediately after
        automatically toggling the checked state of the temporary embedded
        checkbutton.&nbsp; The default value is <code>0</code>, meaning that a
        mouse click into the cell will only start the editing session (and
        automatically toggle the checkbutton's checked state), but not also
        finish it.</p>
      </blockquote>
    </dd>

    <dd id="labelactivebackground">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelactivebackground</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelActiveBackground</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Foreground</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the <code><b>-activebackground</b></code> option for the
        header labels, i.e., the background color to use when the mouse cursor
        is positioned over a header label and the value of
        <code><b>tk_strictMotif</b></code> is false.&nbsp; This option is only
        defined in the Tablelist package if the Tk version being used supports
        the <code><b>-activebackground</b></code> option for label
        widgets.&nbsp; This is checked by Tablelist at initialization time, and
        will normally be the case for Tk versions 8.3.2 or higher.&nbsp; On the
        other hand, the Tablelist_tile package doesn't support the
        <code><b>-labelactivebackground</b></code> option.</p>
      </blockquote>
    </dd>

    <dd id="labelactiveforeground">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelactiveforeground</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelActiveForeground</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Background</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the <code><b>-activeforeground</b></code> option for the
        header labels, i.e., the foreground color to use when the mouse cursor
        is positioned over a header label and the value of
        <code><b>tk_strictMotif</b></code> is false.&nbsp; This option is only
        defined in the Tablelist package if the Tk version being used supports
        the <code><b>-activeforeground</b></code> option for label
        widgets.&nbsp; This is checked by Tablelist at initialization time, and
        will normally be the case for Tk versions 8.3.2 or higher.&nbsp; On the
        other hand, the Tablelist_tile package doesn't support the
        <code><b>-labelactiveforeground</b></code> option.</p>
      </blockquote>
    </dd>

    <dd id="labelbackground">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelbackground</b></code> or
          <code><b>-labelbg</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelBackground</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Background</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the <code><b>-background</b></code> option for the header
        labels.&nbsp; This option is only supported by the Tablelist package,
        but not by Tablelist_tile.</p>
      </blockquote>
    </dd>

    <dd id="labelborderwidth">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelborderwidth</b></code> or
          <code><b>-labelbd</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelBorderWidth</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;BorderWidth</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the <code><b>-borderwidth</b></code> option for the header
        labels.&nbsp; This option is different from the standard
        <code><b>-borderwidth</b></code> option defined for the tablelist
        widget itself.&nbsp; In the package Tablelist_tile this option has a
        theme-specific default value.</p>

        <p><b>REMARK:</b>&nbsp; Please take into account that in some themes,
        setting this option to a value other than the default might be ignored
        by tile and thus could cause alignment problems.&nbsp; This is because
        the border of tile widgets is drawn with theme-specific methods, which
        will not always produce the results known from Tk widgets.</p>
      </blockquote>
    </dd>

    <dd id="labelcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;LabelCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the Tcl command to be invoked when mouse button 1 is
        pressed over one of the header labels and later released over the same
        label.&nbsp; When the <code><b>&lt;ButtonRelease-1&gt;</b></code> event
        occurs, the command is automatically concatenated with the name of the
        tablelist widget and the column index of the respective label, and the
        resulting script is evaluated in the global scope.&nbsp; If the
        tablelist's <code><b><a href="#state">state</a></b></code> is
        <code><b>disabled</b></code> then this action will not take
        place.&nbsp; The most common value of this option is <code><b><a href=
        "tablelistColSort.html#sortByColumn">tablelist::sortByColumn</a></b></code>;
        this command sorts the items based on the column whose index was passed
        to it as second argument.</p>
      </blockquote>
    </dd>

    <dd id="labelcommand2">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelcommand2</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelCommand2</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;LabelCommand2</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the Tcl command to be invoked when mouse button 1 is
        pressed together with the <code>Shift</code> key over one of the header
        labels and later released over the same label.&nbsp; When the
        <code><b>&lt;ButtonRelease-1&gt;</b></code> event occurs, the command
        is automatically concatenated with the name of the tablelist widget and
        the column index of the respective label, and the resulting script is
        evaluated in the global scope.&nbsp; If the tablelist's
        <code><b><a href="#state">state</a></b></code> is
        <code><b>disabled</b></code> then this action will not take
        place.&nbsp; The most common value of this option is <code><b><a href=
        "tablelistColSort.html#addToSortColumns">tablelist::addToSortColumns</a></b></code>;
        this command adds the column index passed to it as second argument to
        the list of sort columns and sorts the items based on the columns
        indicated by the modified list.</p>
      </blockquote>
    </dd>

    <dd id="labeldisabledforeground">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labeldisabledforeground</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelDisabledForeground</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;DisabledForeground</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the <code><b>-disabledforeground</b></code> option for the
        header labels, i.e., the foreground color to use for the labels when
        the tablelist's <code><b><a href="#state">state</a></b></code> is
        <code><b>disabled</b></code>.&nbsp; This option is only defined in the
        Tablelist package if the Tk version being used supports the
        <code><b>-disabledforeground</b></code> option for label widgets.&nbsp;
        This is checked by Tablelist at initialization time, and will normally
        be the case for Tk versions 8.3.1 or higher.&nbsp; On the other hand,
        the Tablelist_tile package doesn't support the
        <code><b>-labeldisabledforeground</b></code> option.</p>
      </blockquote>
    </dd>

    <dd id="labelfont">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelfont</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelFont</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Font</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the <code><b>-font</b></code> option for the header
        labels.&nbsp; In the package Tablelist_tile this option has a
        theme-specific default value.</p>
      </blockquote>
    </dd>

    <dd id="labelforeground">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelforeground</b></code> or
          <code><b>-labelfg</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelForeground</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Foreground</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the <code><b>-foreground</b></code> option for the header
        labels.&nbsp; In the package Tablelist_tile this option has a
        theme-specific default value.</p>
      </blockquote>
    </dd>

    <dd id="labelheight">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelheight</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelHeight</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Height</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the <code><b>-height</b></code> option for the header
        labels.&nbsp; This option is only supported by the Tablelist package,
        but not by Tablelist_tile.</p>
      </blockquote>
    </dd>

    <dd id="labelpady">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelpady</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelPadY</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Pad</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>In the Tablelist package this option specifies the
        <code><b>-pady</b></code> configuration option for the header
        labels.&nbsp; In the Tablelist_tile package the value of the
        <code><b>-labelpady</b></code> option is mapped to the corresponding
        components of the value of the <code><b>-padding</b></code>
        configuration option of the header labels, and the
        <code><b>-labelpady</b></code> option has a theme-specific default
        value.</p>
      </blockquote>
    </dd>

    <dd id="labelrelief">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-labelrelief</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;labelRelief</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Relief</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the <code><b>-relief</b></code> option for the header
        labels.&nbsp; This option is different from the standard
        <code><b>-relief</b></code> option defined for the tablelist widget
        itself.&nbsp; The default value is <code><b>raised</b></code>.</p>
      </blockquote>
    </dd>

    <dd id="listvariable">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-listvariable</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;listVariable</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Variable</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the name of a variable.&nbsp; The value of the variable is
        a list to be displayed inside the widget; if the variable value changes
        then the widget will automatically update itself to reflect the new
        value.&nbsp; The value of the variable must be a valid list.&nbsp; Each
        list element corresponds to a row within the widget, and must be a
        valid list itself; its elements correspond to the cells within the
        respective row.&nbsp; Attempts to assign a variable whose value does
        not fulfil these conditions to <code><b>-listvariable</b></code> will
        cause an error.&nbsp; Attempts to unset a variable in use as a
        <code><b>-listvariable</b></code> will fail but will not generate an
        error.</p>

        <p><b>REMARK 1:</b>&nbsp; For increased efficiency, updating the widget
        to reflect a changed value of the variable specified with this option
        is, whenever possible, done at idle time (i.e., when there are no
        events to process).&nbsp; On the other hand, most tablelist subcommands
        make it necessary to perform an <i>immediate</i> update of the widget's
        internal list according to the value of this variable, before executing
        the subcommand in question.&nbsp; Doing this repeatedly can become
        quite inefficient.&nbsp; To avoid performance problems, you should
        always try to separate the operations that build up the value of the
        variable specified by this option from other commands.&nbsp; For
        example, instead of</p>

        <blockquote>
          <pre>
tablelist::tablelist .tbl ... -listvariable var
set var {}
for {set row 0} {$row &lt; 1000} {incr row} {
    lappend var ...
    .tbl cellconfigure $row,3 -image ...
}
</pre>
        </blockquote>

        <p>you should write</p>

        <blockquote>
          <pre>
tablelist::tablelist .tbl ... -listvariable var
set var {}
for {set row 0} {$row &lt; 1000} {incr row} {
    lappend var ...
}
for {set row 0} {$row &lt; 1000} {incr row} {
    .tbl cellconfigure $row,3 -image ...
}
</pre>
        </blockquote>

        <p>The first method above is quite inefficient, because it requires
        1000 updates of the widget's internal list.&nbsp; The second method
        performs incomparably faster, because it needs only one synchronization
        (at the beginning of the second loop).</p>

        <p><b>REMARK 2:</b>&nbsp; It is not recommended to set this option for
        a tablelist used as a tree widget, because adding new items to the list
        specified as its value will result in inserting those list elements
        into the widget without respecting the tree's internal structure.&nbsp;
        There is no problem if you access the variable for reading only, but
        for that purpose it is more efficient to use the <code><b><a href=
        "#itemlistvar">itemlistvar</a></b></code> subcommand rather than the
        <code><b>-listvariable</b></code> option.</p>
      </blockquote>
    </dd>

    <dd id="movablecolumns">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-movablecolumns</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;movableColumns</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;MovableColumns</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that determines whether the columns can be
        moved interactively.&nbsp; See the <a href="#label_bindings">DEFAULT
        AND INDIVIDUAL BINDINGS FOR THE HEADER LABELS</a> section below for
        information on moving a column interactively.&nbsp; The default value
        is <code>0</code>.</p>
      </blockquote>
    </dd>

    <dd id="movablerows">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-movablerows</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;movableRows</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;MovableRows</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that determines whether the rows can be
        moved interactively.&nbsp; See the <a href="#body_bindings">DEFAULT AND
        INDIVIDUAL BINDINGS FOR THE TABLELIST BODY</a> section below for
        information on moving a row interactively.&nbsp; The default value is
        <code>0</code>.</p>
      </blockquote>
    </dd>

    <dd id="movecolumncursor">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-movecolumncursor</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;moveColumnCursor</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;MoveColumnCursor</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the mouse cursor to be used when moving a column
        interactively.&nbsp; The default value is <code><b>icon</b></code> on
        the windowing systems <code><b>x11</b></code> and
        <code><b>win32</b></code>, and the native cursor
        <code><b>closedhand</b></code> on the Macintosh windowing systems
        <code><b>classic</b></code> and <code><b>aqua</b></code>.</p>
      </blockquote>
    </dd>

    <dd id="movecursor">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-movecursor</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;moveCursor</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;MoveCursor</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the mouse cursor to be used when moving a row
        interactively.&nbsp; The default value is <code><b>hand2</b></code> on
        the windowing systems <code><b>x11</b></code> and
        <code><b>win32</b></code>, and the native cursor
        <code><b>pointinghand</b></code> on the Macintosh windowing systems
        <code><b>classic</b></code> and <code><b>aqua</b></code>.</p>
      </blockquote>
    </dd>

    <dd id="populatecommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-populatecommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;populateCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;PopulateCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a Tcl command to be invoked by the <code><b><a href=
        "#searchcolumn">searchcolumn</a></b></code> subcommand before examining
        the children (or descendants, when used with the
        <code><b>-descend</b></code> option) of a tablelist row whose children
        have not been inserted yet.&nbsp; The specified command is
        automatically concatenated with the name of the tablelist widget and
        the row index, and the resulting script is evaluated in the global
        scope.&nbsp; It is expected that this script will insert the children
        of the row in question, without expanding the node or changing its
        appearance in any other way.</p>

        <p>For technical reasons (the use of the <code><b>-elide</b></code>
        text widget tag option for collapsing a row), this option is not
        supported for Tk versions earlier than 8.3.</p>

        <p><b>REMARK:</b>&nbsp; There are many similarities between this option
        and <code><b><a href=
        "#expandcommand">-expandcommand</a></b></code>.&nbsp; Both options are
        used in the first place to insert children on demand.&nbsp; The main
        differences between them are as follows:</p>

        <ol>
          <li>The command specified by the <code><b>-populatecommand</b></code>
          option is only invoked for rows whose children have not been inserted
          yet, while the one specified by <code><b>-expandcommand</b></code> is
          always invoked before expanding a row, regardless of whether the
          children of that row are already present in the widget or not.</li>

          <li class="tm">The command specified by the
          <code><b>-expandcommand</b></code> option may perform visual changes
          on the node in question, while the role of the one specified by
          <code><b>-populatecommand</b></code> is restricted to inserting the
          children, without altering the node's appearance in any way.</li>
        </ol>

        <p>A logical consequence of the above is that the value of
        <code><b>-populatecommand</b></code> is usually just a stripped-down
        version of the command specified by the
        <code><b>-expandcommand</b></code> option.&nbsp; For example, the
        <a href="tablelist.html#ex_dirViewer">Directory Viewer</a> demo script
        might use a command implemented as follows:</p>

        <blockquote>
          <pre>
proc populateCmd {tbl row} {
    # Get the name of the directory whose leaf name is
    # displayed in the first cell of the specified row
    set dir [$tbl rowattrib $row pathName]

    # Display the contents of the directory $dir
    # as child items of the one identified by $row
    putContents $dir $tbl $row
}
</pre>
        </blockquote>

        <p>Moreover, the <code><b>-expandcommand</b></code> option can be set
        to a command that invokes the one specified by the
        <code><b>-populatecommand</b></code> option:</p>

        <blockquote>
          <pre>
proc expandCmd {tbl row} {
    if {[$tbl childcount $row] == 0} {
        populateCmd $tbl $row
    }

    # The rest is just eye candy:
    if {[$tbl childcount $row] != 0} {
        # Update the image displayed in the row's first cell
        $tbl cellconfigure $row,0 -image openFolderImg
    }
}
</pre>
        </blockquote>
      </blockquote>
    </dd>

    <dd id="protecttitlecolumns">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-protecttitlecolumns</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;protectTitleColumns</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ProtectTitleColumns</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that determines whether the boundary of
        the title column area shall be protected from being crossed when moving
        a column interactively.&nbsp; See the <a href="#label_bindings">DEFAULT
        AND INDIVIDUAL BINDINGS FOR THE HEADER LABELS</a> section below for
        information on moving a column interactively.&nbsp; The default value
        is <code>0</code>, specifying that non-title columns can be moved into
        the title column area and vice-versa.</p>
      </blockquote>
    </dd>

    <dd id="resizablecolumns">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-resizablecolumns</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;resizableColumns</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ResizableColumns</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that determines whether the columns can be
        resized interactively.&nbsp; See the <a href="#label_bindings">DEFAULT
        AND INDIVIDUAL BINDINGS FOR THE HEADER LABELS</a> section below for
        information on interactive column resizing.&nbsp; The default value is
        <code>1</code>.</p>
      </blockquote>
    </dd>

    <dd id="resizecursor">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-resizecursor</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;resizeCursor</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ResizeCursor</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the mouse cursor to be used during interactive column
        resizing.&nbsp; The default value is
        <code><b>sb_h_double_arrow</b></code> on the windowing systems
        <code><b>x11</b></code> and <code><b>win32</b></code>, and the native
        cursor <code><b>resizeleftright</b></code> on the Macintosh windowing
        systems <code><b>classic</b></code> and <code><b>aqua</b></code>.</p>
      </blockquote>
    </dd>

    <dd id="selectmode">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-selectmode</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;selectMode</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;SelectMode</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies one of several styles for manipulating the
        selection.&nbsp; The value of the option may be arbitrary, but the
        default bindings expect it to be either <code><b>single</b></code>,
        <code><b>browse</b></code>, <code><b>multiple</b></code>, or
        <code><b>extended</b></code>.&nbsp; The default value is
        <code><b>browse</b></code>.</p>
      </blockquote>
    </dd>

    <dd id="selecttype">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-selecttype</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;selectType</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;SelectType</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies one of two selection types for the tablelist widget:
        <code><b>row</b></code> or <code><b>cell</b></code>.&nbsp; If the
        selection type is <code><b>row</b></code> then the default bindings
        will select and deselect entire items, and the whole row having the
        location cursor will be displayed as active when the tablelist has the
        keyboard focus.&nbsp; If the selection type is <code><b>cell</b></code>
        then the default bindings will select and deselect individual elements,
        and the single cell having the location cursor will be displayed as
        active when the tablelist has the keyboard focus.&nbsp; The default
        value is <code><b>row</b></code>.</p>
      </blockquote>
    </dd>

    <dd id="setfocus">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-setfocus</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;setFocus</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;SetFocus</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that determines whether a click with the
        left mouse button anywhere into the tablelist's body, including the
        separators and the embedded images (more precisely, any descendants of
        the tablelist widget having the binding tag <code><b><a href=
        "#body_bindings">TablelistBody</a></b></code>) should set the focus to
        the body of the tablelist widget if the latter's <code><b><a href=
        "#state">state</a></b></code> is <code><b>normal</b></code>.&nbsp; The
        default value is <code>1</code>.</p>
      </blockquote>
    </dd>

    <dd id="showarrow">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-showarrow</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;showArrow</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ShowArrow</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that determines whether the
        <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> and
        <code><b><a href="#sortbycolumnlist">sortbycolumnlist</a></b></code>
        subcommands of the Tcl command associated with the widget should place
        an arrow indicating the sort order into the header label(s) of the
        column(s) specified by their first argument.&nbsp; The default value is
        <code>1</code>.</p>
      </blockquote>
    </dd>

    <dd id="showlabels">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-showlabels</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;showLabels</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ShowLabels</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that determines whether the header labels
        are to be shown or not.&nbsp; The default value is <code>1</code>.</p>
      </blockquote>
    </dd>

    <dd id="showseparators">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-showseparators</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;showSeparators</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;ShowSeparators</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that determines whether the columns are to
        be separated with borders.&nbsp; The default value is
        <code>0</code>.&nbsp; The separators are implemented as thin frames
        with sunken relief in the package Tablelist, and as tile separator
        widgets in the package Tablelist_tile.&nbsp; They are attached to the
        right edges of the header labels, and are only created if the value of
        this option is true.&nbsp; In this case, a horizontal separator will
        also be created and placed just below the last row, provided that the
        value of the <code><b><a href=
        "#fullseparators">-fullseparators</a></b></code> option is false and
        there is free space left between the last row and the bottom of the
        tablelist window.</p>

        <p><b>REMARK:</b>&nbsp; Tablelist doesn't support horizontal separators
        (except for the one mentioned above), but a nice distinguishing effect
        for the rows can be achieved with the aid of the <code><b><a href=
        "#stripebackground">-stripebackground</a></b></code> option discussed
        below.</p>
      </blockquote>
    </dd>

    <dd id="snipstring">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-snipstring</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;snipString</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;SnipString</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the string to be used as snip indicator when displaying
        the elements that don't fit into their cells.&nbsp; The default is an
        ellipsis (<code>"..."</code>).</p>
      </blockquote>
    </dd>

    <dd id="sortcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-sortcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;sortCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;SortCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a command to be used for the comparison of the items when
        invoking the <code><b><a href="#sort">sort</a></b></code> subcommand of
        the Tcl command associated with the tablelist widget.&nbsp; To compare
        two items (viewed as lists of cell contents within one row each) during
        the <code><b>sort</b></code> operation, the command is automatically
        concatenated with the two items and the resulting script is
        evaluated.&nbsp; The script should return an integer less than, equal
        to, or greater than zero if the first item is to be considered less
        than, equal to, or greater than the second, respectively.</p>
      </blockquote>
    </dd>

    <dd id="spacing">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-spacing</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;spacing</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Spacing</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies additional space to provide above and below each row of
        the widget.&nbsp; The option's value may have any of the standard forms
        for screen distances.&nbsp; It defaults to <code>0</code>.&nbsp; See
        also the <code><b><a href="#tight">-tight</a></b></code> option.</p>
      </blockquote>
    </dd>

    <dd id="state">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-state</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;state</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;State</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies one of two states for the tablelist widget:
        <code><b>normal</b></code> or <code><b>disabled</b></code>.&nbsp; If
        the widget is disabled then neither items nor columns may be inserted,
        deleted, updated, or moved, the items, header labels, and the up- or
        down-arrow are drawn in the <code><b><a href=
        "#body_options">-disabledforeground</a></b></code>, <code><b><a href=
        "#labeldisabledforeground">-labeldisabledforeground</a></b></code>, and
        <code><b><a href=
        "#arrowdisabledcolor">-arrowdisabledcolor</a></b></code> color,
        respectively, the selection cannot be modified and is not shown
        (although the selection information is retained), the header labels are
        completely insensitive, and no interactive cell editing can be
        performed.&nbsp; In addition, in disabled state any color options
        specified at column, row, or cell level will be ignored.</p>
      </blockquote>
    </dd>

    <dd id="stretch">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-stretch</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;stretch</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Stretch</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the columns to be stretched in order to fill the tablelist
        window if necessary.&nbsp; The option's value may be
        <code><b>all</b></code> or a list of column indices in any of the forms
        described in the <a href="#col_indices">COLUMN INDICES</a> section
        below.&nbsp; In the second case, the specified column indices are
        replaced with their numerical equivalents, except for the index
        <code><b>end</b></code>, which is viewed as a dynamic column index
        whose numerical equivalent might change during program execution and
        therefore will be recomputed every time the columns are
        stretched.&nbsp; The list will be updated automatically whenever
        columns are inserted, deleted, or moved.&nbsp; The number of pixels by
        which a column is stretched is proportional to its width in
        pixels.&nbsp; The default value of this option is an empty list,
        meaning that no column will be stretched to eliminate the blank space
        that might appear at the right of the table.&nbsp; (Note that the blank
        space following the header labels is filled with a dummy, insensitive
        label having the same background, borderwidth, and relief as the
        "normal" header labels.)&nbsp; This option is ignored if the value of
        the <code><b><a href="#width">-width</a></b></code> configuration
        option is zero or less.</p>
      </blockquote>
    </dd>

    <dd id="stripebackground">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-stripebackground</b></code> or
          <code><b>-stripebg</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;stripeBackground</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Background</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the background color to use when displaying the items
        belonging to a stripe.&nbsp; Each stripe is composed of the same number
        <code>stripeHeight</code> of consecutive <a href=
        "#isviewable">viewable</a> items, according to the value of the
        <code><b><a href="#stripeheight">-stripeheight</a></b></code>
        configuration option.&nbsp; The first <code>stripeHeight</code>
        viewable items are "normal" ones; they are followed by a stripe
        composed of the next <code>stripeHeight</code> viewable items, which in
        turn is followed by the same number of "normal" viewable items, and so
        on.&nbsp; In the Tablelist package and in most themes supported by
        Tablelist_tile, the default value is an empty string, indicating that
        the stripes will inherit the background color specified by the
        <code><b><a href="#body_options">-background</a></b></code>
        configuration option.&nbsp; When using Tablelist_tile with the
        <code><b>tileqt</b></code> theme then the default value is given by the
        global KDE option <code><b>alternateBackground</b></code>, which in
        turn depends on the current color scheme.&nbsp; In this case it is
        recommended to either keep that default value retrieved from KDE, or to
        use an explicitly specified empty string if no stripes are to be
        displayed.&nbsp; The <code><b>-stripebackground</b></code> option has a
        higher priority than the <code><b>-background</b></code> column
        configuration option, but a lower priority than the
        <code><b>-background</b></code> option specified at row or cell
        level.</p>
      </blockquote>
    </dd>

    <dd id="stripeforeground">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-stripeforeground</b></code> or
          <code><b>-stripefg</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;stripeForeground</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Foreground</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the foreground color to use when displaying the items
        belonging to a stripe.&nbsp; Each stripe is composed of the same number
        <code>stripeHeight</code> of consecutive <a href=
        "#isviewable">viewable</a> items, according to the value of the
        <code><b><a href="#stripeheight">-stripeheight</a></b></code>
        configuration option.&nbsp; The first <code>stripeHeight</code>
        viewable items are "normal" ones; they are followed by a stripe
        composed of the next <code>stripeHeight</code> viewable items, which in
        turn is followed by the same number of "normal" viewable items, and so
        on.&nbsp; The default value is an empty string, indicating that the
        stripes will inherit the foreground color specified by the
        <code><b><a href="#body_options">-foreground</a></b></code>
        configuration option.&nbsp; The <code><b>-stripeforeground</b></code>
        option has a higher priority than the <code><b>-foreground</b></code>
        column configuration option, but a lower priority than the
        <code><b>-foreground</b></code> option specified at row or cell
        level.</p>
      </blockquote>
    </dd>

    <dd id="stripeheight">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-stripeheight</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;stripeHeight</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;StripeHeight</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the number of items in each stripe.&nbsp; If zero or less
        then no stripes are displayed.&nbsp; The default is <code>1</code>.</p>
      </blockquote>
    </dd>

    <dd id="takefocus">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-takefocus</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;takeFocus</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;TakeFocus</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>This option determines whether the widget accepts the focus during
        keyboard traversal.&nbsp; It is almost identical to the standard option
        of the same name (see the <b>options</b> manual entry for
        details).&nbsp; The only difference is that not the widget itself but
        its body child (containing the items) will receive the focus during
        keyboard traversal with the standard keys (<code>Tab</code> and
        <code>Shift-Tab</code>).</p>
      </blockquote>
    </dd>

    <dd id="targetcolor">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-targetcolor</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;targetColor</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;TargetColor</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the color of the temporary gap displayed in the
        tablelist's body or header to indicate the target position when moving
        a row or column interactively.&nbsp; The default value is
        <code><b>black</b></code>.</p>
      </blockquote>
    </dd>

    <dd id="tight">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-tight</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;tight</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Tight</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a boolean value that determines whether to eliminate the
        one-pixel additional space left below each tablelist row for Tk listbox
        compatibility.&nbsp; The default value is <code>0</code>, which draws a
        one-pixel additional space below each row, just like a Tk core
        listbox.</p>

        <p><b>REMARK:</b>&nbsp; You can set this option to true and at the same
        time provide additional space above and below each row with the aid of
        the <code><b><a href="#spacing">-spacing</a></b></code> configuratiom
        option.&nbsp; As a result, the space below each row will be the same as
        above the row (and not one pixel higher).</p>
      </blockquote>
    </dd>

    <dd id="titlecolumns">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-titlecolumns</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;titleColumns</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;TitleColumns</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the number of the non-scrollable columns at the left edge
        of the window, also called <b>title columns</b>.&nbsp; The positions of
        these columns will not change when adjusting the horizontal view by
        invoking the <code><b><a href="#scan">scan</a></b></code>,
        <code><b><a href="#seecell">seecell</a></b></code>, <code><b><a href=
        "#seecolumn">seecolumn</a></b></code>, or <code><b><a href=
        "#xview">xview</a></b></code> subcommand.&nbsp; The default value is
        <code>0</code>.&nbsp; The value of this option also determines the
        scrolling unit used by the commands mentioned above when shifting the
        horizontal view: if it is positive then the horizontal scrolling is
        performed column-wise, otherwise by character units (the width of the
        <code><b>0</b></code> character).</p>

        <p>The end of the title column area is visualized with the aid of a
        separator, attached to the right edge of the header label corresponding
        to the last non-hidden title column.&nbsp; This special separator is
        always displayed to mark the end of the title columns (if any),
        independently of the value of the <code><b><a href=
        "#showseparators">-showseparators</a></b></code> option.&nbsp; The user
        can easily distinguish it from the other separators by means of its
        background color, which is different from that of the other
        separators.</p>

        <p>For technical reasons (the use of the <code><b>-elide</b></code>
        option for a text widget tag), this option is not supported for Tk
        versions earlier than 8.3.</p>
      </blockquote>
    </dd>

    <dd id="tooltipaddcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-tooltipaddcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;tooltipAddCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;TooltipAddCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a Tcl command to be used for displaying cell- and column
        label-specific balloon help.&nbsp; When the mouse pointer enters a
        cell, the command is automatically concatenated with the name of the
        tablelist widget and the cell's row and column indices, and the
        resulting script is evaluated in the global scope.&nbsp; Similarly,
        when the mouse pointer enters a header label, the command is
        automatically concatenated with the name of the tablelist widget, the
        number <code>-1</code>, and the column index of the respective label,
        and the resulting script is evaluated in the global scope.&nbsp; In
        both cases, the action described above is only triggered if both the
        value of this option and that of <code><b><a href=
        "#tooltipdelcommand">-tooltipdelcommand</a></b></code> are nonempty
        strings.</p>

        <p>For example, consider the procedure <code>tooltipAddCmd</code> shown
        below, which makes use of the <code>DynamicHelp::add</code> command
        from the BWidget package to display the full cell and label texts as
        tooltips for the cells and header labels with snipped contents.</p>

        <blockquote>
          <pre>
proc tooltipAddCmd {tbl row col} {
    if {($row &gt;= 0 &amp;&amp; [$tbl iselemsnipped $row,$col fullText]) ||
        ($row &lt;  0 &amp;&amp; [$tbl istitlesnipped $col fullText])} {
        DynamicHelp::add $tbl -text $fullText
    }
}
</pre>
        </blockquote>

        <p>A tablelist widget can use this procedure by specifying</p>

        <blockquote>
          <pre>
... -tooltipaddcommand tooltipAddCmd -tooltipdelcommand DynamicHelp::delete
</pre>
        </blockquote>

        <p>If you prefer to use the <code>tooltip::tooltip</code> command from
        the tooltip package contained in tklib then the procedure becomes</p>

        <blockquote>
          <pre>
proc tooltipAddCmd {tbl row col} {
    if {($row &gt;= 0 &amp;&amp; [$tbl iselemsnipped $row,$col fullText]) ||
        ($row &lt;  0 &amp;&amp; [$tbl istitlesnipped $col fullText])} {
        tooltip::tooltip $tbl $fullText
    }
}
</pre>
        </blockquote>

        <p>and can be used by specifying</p>

        <blockquote>
          <pre>
... -tooltipaddcommand tooltipAddCmd -tooltipdelcommand "tooltip::tooltip clear"
</pre>
        </blockquote>

        <p>Please note that in the less common case that the name of your
        tablelist widget contains spaces, the <code>tooltip::tooltip
        clear</code>command won't work as expected.&nbsp; As a workaround you
        can use the slightly modified approach shown below:</p>

        <blockquote>
          <pre>
proc tooltipDelCmd tbl { tooltip::tooltip $tbl "" }

... -tooltipaddcommand tooltipAddCmd -tooltipdelcommand tooltipDelCmd
</pre>
        </blockquote>

        <p>Both examples above make use of the <code><b><a href=
        "#iselemsnipped">iselemsnipped</a></b></code> and <code><b><a href=
        "#istitlesnipped">istitlesnipped</a></b></code> subcommands, to make
        sure that the full cell and label texts will only be displayed for
        those cells and header labels whose contents are snipped.</p>
      </blockquote>
    </dd>

    <dd id="tooltipdelcommand">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-tooltipdelcommand</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;tooltipDelCommand</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;TooltipDelCommand</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies a Tcl command to be used for removing the cell- or column
        label-specific balloon help.&nbsp; When the mouse pointer leaves a cell
        or a header label, the command specified by this option is
        automatically concatenated with the name of the tablelist widget and
        the resulting script is evaluated in the global scope.&nbsp; This
        action is only triggered if both the value of this option and that of
        <code><b><a href="#tooltipaddcommand">-tooltipaddcommand</a></b></code>
        are nonempty strings.&nbsp; Common values for this option are
        <code>"DynamicHelp::delete"</code> (which requires the BWidget package)
        and&nbsp; <code>"tooltip::tooltip clear"</code>&nbsp; (which requires
        the tooltip package contained in tklib).&nbsp; Their usage is shown in
        the examples above.</p>
      </blockquote>
    </dd>

    <dd id="treecolumn">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-treecolumn</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;treeColumn</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;TreeColumn</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the column to contain the indentations and expand/collapse
        controls for a tablelist used as a tree widget.&nbsp; The option's
        value may be a column index in any of the forms described in the
        <a href="#col_indices">COLUMN INDICES</a> section below.&nbsp; The
        specified column index is replaced with its numerical equivalent, and
        it will be updated automatically whenever columns are inserted,
        deleted, or moved.&nbsp; The default value is <code>0</code>.</p>

        <p>For technical reasons (the use of the <code><b>-elide</b></code>
        text widget tag option for collapsing a row), this option is not
        supported for Tk versions earlier than 8.3.</p>

        <p><b>REMARK:</b>&nbsp; Please note that the tree structure will only
        be displayed as expected if the column specified by this option is
        left-aligned.&nbsp; It is your responsibility to make sure that this
        restriction is fulfilled when using a tablelist as a tree widget.</p>
      </blockquote>
    </dd>

    <dd id="treestyle">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-treestyle</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;treeStyle</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;TreeStyle</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the look &amp; feel of the column containing the
        indentations and expand/collapse controls for a tablelist used as a
        tree widget.&nbsp; This includes, among others, the images used for
        displaying the expand/collapse controls, the indentation width, and
        whether expand/collapse controls and indentations are to be protected
        when selecting a row or cell.&nbsp; The currently supported values are
        shown at a glance below:</p>

        <table border="2" cellspacing="0" cellpadding="3" rules="groups">
          <colgroup span="1"></colgroup>

          <colgroup span="1"></colgroup>

          <colgroup span="1"></colgroup>

          <colgroup span="1"></colgroup>

          <colgroup span="1"></colgroup>

          <tbody>
            <tr align="center">
              <td><img src="aqua.png" alt="aqua" width="120" height="54"></td>

              <td><img src="gtk.png" alt="gtk" width="120" height="51"></td>

              <td><img src="newWave.png" alt="newWave" width="120" height=
              "51"></td>

              <td><img src="ubuntu.png" alt="ubuntu" width="120" height=
              "51"></td>

              <td><img src="mint.png" alt="mint" width="120" height="51"></td>
            </tr>

            <tr align="center">
              <td><code>aqua</code></td>

              <td><code>gtk</code></td>

              <td><code>newWave</code></td>

              <td><code>ubuntu</code></td>

              <td><code>mint</code></td>
            </tr>
          </tbody>

          <tbody>
            <tr align="center">
              <td><img src="baghira.png" alt="baghira" width="120" height=
              "51"></td>

              <td><img src="phase.png" alt="phase" width="120" height=
              "51"></td>

              <td><img src="oxygen1.png" alt="oxygen1" width="120" height=
              "51"></td>

              <td><img src="oxygen2.png" alt="oxygen2" width="120" height=
              "51"></td>

              <td><img src="klearlooks.png" alt="klearlooks" width="120"
              height="51"></td>
            </tr>

            <tr align="center">
              <td><code>baghira</code></td>

              <td><code>phase</code></td>

              <td><code>oxygen1</code></td>

              <td><code>oxygen2</code></td>

              <td><code>klearlooks</code></td>
            </tr>
          </tbody>

          <tbody>
            <tr align="center">
              <td><img src="winnative.png" alt="winnative" width="120" height=
              "51"></td>

              <td><img src="winxpBlue.png" alt="winxpBlue" width="120" height=
              "51"></td>

              <td><img src="winxpOlive.png" alt="winxpOlive" width="120"
              height="51"></td>

              <td><img src="winxpSilver.png" alt="winxpSilver" width="120"
              height="51"></td>

              <td><img src="plastik.png" alt="plastik" width="120" height=
              "51"></td>
            </tr>

            <tr align="center">
              <td><code>winnative</code></td>

              <td><code>winxpBlue</code></td>

              <td><code>winxpOlive</code></td>

              <td><code>winxpSilver</code></td>

              <td><code>plastik</code></td>
            </tr>
          </tbody>

          <tbody>
            <tr align="center">
              <td><img src="vistaAero.png" alt="vistaAero" width="120" height=
              "54"></td>

              <td><img src="vistaClassic.png" alt="vistaClassic" width="120"
              height="51"></td>

              <td><img src="win7Aero.png" alt="win7Aero" width="120" height=
              "54"></td>

              <td><img src="win7Classic.png" alt="win7Classic" width="120"
              height="51"></td>

              <td><img src="plastique.png" alt="plastique" width="120" height=
              "51"></td>
            </tr>

            <tr align="center">
              <td><code>vistaAero</code></td>

              <td><code>vistaClassic</code></td>

              <td><code>win7Aero</code></td>

              <td><code>win7Classic</code></td>

              <td><code>plastique</code></td>
            </tr>
          </tbody>

          <tbody>
            <tr align="center">
              <td><img src="ambiance.png" alt="ambiance" width="120" height=
              "63"></td>

              <td><img src="dust.png" alt="dust" width="120" height="63"></td>

              <td><img src="dustSand.png" alt="dustSand" width="120" height=
              "63"></td>

              <td><img src="radiance.png" alt="radiance" width="120" height=
              "63"></td>

              <td><img src="adwaita.png" alt="adwaita" width="120" height=
              "63"></td>
            </tr>

            <tr align="center">
              <td><code>ambiance</code></td>

              <td><code>dust</code></td>

              <td><code>dustSand</code></td>

              <td><code>radiance</code></td>

              <td><code>adwaita</code></td>
            </tr>
          </tbody>
        </table>

        <p>If the tree style is <code><b>aqua</b></code>,
        <code><b>gtk</b></code>, <code><b>newWave</b></code>,
        <code><b>ubuntu</b></code>, <code><b>mint</b></code>,
        <code><b>oxygen2</b></code>, <code><b>vistaAero</b></code>, or
        <code><b>win7Aero</b></code> and the Tk version is either 8.6 (with
        built-in PNG support) or 8.5 and the <code><b>img::png</b></code>
        package can be loaded into the interpreter, then the images used for
        displaying the expand/collapse controls are PNG images with alpha
        channel.&nbsp; Otherwise (i.e., for the other tree styles or in the
        absence of PNG support) GIF images are used for the expand/collapse
        controls.</p>

        <p>The following table contains a detailed description of the tree
        styles, in alphabetical order:</p>

        <table border="2" cellspacing="0" cellpadding="3">
          <tr bgcolor="#FFFFE0">
            <th align="left">Value</th>

            <th align="center">Screenshot</th>

            <th align="left">Comments</th>
          </tr>

          <tr>
            <td><code><b>adwaita</b></code></td>

            <td><img src="adwaita.png" alt="adwaita" width="120" height=
            "63"></td>

            <td>Inspired by the GTK+ 3 theme Adwaita.&nbsp; Recommended to be
            used with large fonts and images.</td>
          </tr>

          <tr>
            <td><code><b>ambiance</b></code></td>

            <td><img src="ambiance.png" alt="ambiance" width="120" height=
            "63"></td>

            <td>Inspired by the GTK+ theme Ambiance.&nbsp; Recommended to be
            used with large fonts and images.</td>
          </tr>

          <tr>
            <td><code><b>aqua</b></code></td>

            <td><img src="aqua.png" alt="aqua" width="120" height="54"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing systems
                  <code><b>aqua</b></code> and
                  <code><b>classic</b></code>.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the themes <code><b>aqua</b></code> and
                  <code><b>Aquativo</b></code>.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>baghira</b></code></td>

            <td><img src="baghira.png" alt="baghira" width="120" height=
            "51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the Qt styles <code><b>baghira</b></code>,
                  <code><b>cde</b></code>, and <code><b>motif</b></code> within
                  the <code><b>tileqt</b></code> theme.&nbsp; Also used by some
                  flavors of <code><b>qtcurve</b></code>.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>dust</b></code></td>

            <td><img src="dust.png" alt="dust" width="120" height="63"></td>

            <td>Inspired by the GTK+ theme Dust.&nbsp; Recommended to be used
            with large fonts and images.</td>
          </tr>

          <tr>
            <td><code><b>dustSand</b></code></td>

            <td><img src="dustSand.png" alt="dustSand" width="120" height=
            "63"></td>

            <td>Inspired by the GTK+ theme Dust Sand.&nbsp; Recommended to be
            used with large fonts and images.</td>
          </tr>

          <tr>
            <td><code><b>gtk</b></code></td>

            <td><img src="gtk.png" alt="gtk" width="120" height="51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing system
                  <code><b>x11</b></code>.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the themes <code><b>blue</b></code>,
                  <code><b>clam</b></code>, <code><b>classic</b></code>,
                  <code><b>default</b></code>, <code><b>kroc</b></code>,
                  <code><b>sriv</b></code>, <code><b>srivlg</b></code>, and
                  <code><b>step</b></code>, as well as for the Qt style
                  <code><b>gtk+</b></code> within the
                  <code><b>tileqt</b></code> theme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>klearlooks</b></code></td>

            <td><img src="klearlooks.png" alt="klearlooks" width="120" height=
            "51"></td>

            <td>
              Inspired by the KDE 4 style Klearlooks.<br>

              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the Qt style <code><b>qtcurve</b></code>
                  within the <code><b>tileqt</b></code> theme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>mint</b></code></td>

            <td><img src="mint.png" alt="mint" width="120" height="51"></td>

            <td>Inspired by a few GTK+ 3 themes bundled with the Mint Linux
            distribution.</td>
          </tr>

          <tr>
            <td><code><b>newWave</b></code></td>

            <td><img src="newWave.png" alt="newWave" width="120" height=
            "51"></td>

            <td>Inspired by the GTK+ theme New Wave.</td>
          </tr>

          <tr>
            <td><code><b>oxygen1</b></code></td>

            <td><img src="oxygen1.png" alt="oxygen1" width="120" height=
            "51"></td>

            <td>Inspired by the KDE 4 style Oxygen.</td>
          </tr>

          <tr>
            <td><code><b>oxygen2</b></code></td>

            <td><img src="oxygen2.png" alt="oxygen2" width="120" height=
            "51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the Qt style <code><b>oxygen</b></code>
                  within the <code><b>tileqt</b></code> theme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>phase</b></code></td>

            <td><img src="phase.png" alt="phase" width="120" height="51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the Qt style <code><b>phase</b></code> within
                  the <code><b>tileqt</b></code> theme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>plastik</b></code></td>

            <td><img src="plastik.png" alt="plastik" width="120" height=
            "51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the <code><b>plastik</b></code> theme and the
                  Qt style <code><b>plastik</b></code> within the
                  <code><b>tileqt</b></code> theme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>plastique</b></code></td>

            <td><img src="plastique.png" alt="plastique" width="120" height=
            "51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the Qt style <code><b>plastique</b></code>
                  within the <code><b>tileqt</b></code> theme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>radiance</b></code></td>

            <td><img src="radiance.png" alt="radiance" width="120" height=
            "63"></td>

            <td>Inspired by the GTK+ theme Radiance.&nbsp; Recommended to be
            used with large fonts and images.</td>
          </tr>

          <tr>
            <td><code><b>ubuntu</b></code></td>

            <td><img src="ubuntu.png" alt="ubuntu" width="120" height=
            "51"></td>

            <td>Inspired by a couple of GTK+ 3 themes bundled with the Ubuntu
            Linux distribution.</td>
          </tr>

          <tr>
            <td><code><b>vistaAero</b></code></td>

            <td><img src="vistaAero.png" alt="vistaAero" width="120" height=
            "54"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing system
                  <code><b>win32</b></code> on Windows Vista.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the <code><b>vista</b></code> theme on
                  Windows Vista with the Vista Aero style.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>vistaClassic</b></code></td>

            <td><img src="vistaClassic.png" alt="vistaClassic" width="120"
            height="51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing system
                  <code><b>win32</b></code> on Windows Vista with the Windows
                  Classic style.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the <code><b>vista</b></code> theme on
                  Windows Vista with the Windows Classic style.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>win7Aero</b></code></td>

            <td><img src="win7Aero.png" alt="win7Aero" width="120" height=
            "54"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing system
                  <code><b>win32</b></code> on Windows 7.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the <code><b>vista</b></code> theme on
                  Windows 7 with the Windows 7 Aero style.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>win7Classic</b></code></td>

            <td><img src="win7Classic.png" alt="win7Classic" width="120"
            height="51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing system
                  <code><b>win32</b></code> on Windows 7 with the Windows
                  Classic style.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the <code><b>vista</b></code> theme on
                  Windows 7 with the Windows Classic style.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>winnative</b></code></td>

            <td><img src="winnative.png" alt="winnative" width="120" height=
            "51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing system
                  <code><b>win32</b></code> on Windows 2000 and Windows XP with
                  the Windows Classic style.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the themes <code><b>alt</b></code>,
                  <code><b>keramik</b></code>, <code><b>keramik_alt</b></code>,
                  <code><b>winnative</b></code>, and
                  <code><b>xpnative</b></code> with the Windows Classic style,
                  as well as for most Qt styles within the
                  <code><b>tileqt</b></code> theme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>winxpBlue</b></code></td>

            <td><img src="winxpBlue.png" alt="winxpBlue" width="120" height=
            "51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing system
                  <code><b>win32</b></code> on Windows XP with the Blue color
                  scheme.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the <code><b>winxpblue</b></code> theme and
                  the <code><b>xpnative</b></code> theme on Windows XP with the
                  Blue color scheme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>winxpOlive</b></code></td>

            <td><img src="winxpOlive.png" alt="winxpOlive" width="120" height=
            "51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing system
                  <code><b>win32</b></code> on Windows XP with the Olive Green
                  color scheme.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the <code><b>xpnative</b></code> theme on
                  Windows XP with the Olive Green color scheme.</td>
                </tr>
              </table>
            </td>
          </tr>

          <tr>
            <td><code><b>winxpSilver</b></code></td>

            <td><img src="winxpSilver.png" alt="winxpSilver" width="120"
            height="51"></td>

            <td>
              <table border="0" cellpadding="0" cellspacing="0">
                <tr valign="top">
                  <td>Tablelist:&nbsp;</td>

                  <td>Default for the windowing system
                  <code><b>win32</b></code> on Windows XP with the Silver color
                  scheme.</td>
                </tr>

                <tr valign="top">
                  <td>Tablelist_tile:&nbsp;</td>

                  <td>Default for the <code><b>xpnative</b></code> theme on
                  Windows XP with the Silver color scheme.</td>
                </tr>
              </table>
            </td>
          </tr>
        </table>

        <p>For technical reasons (the use of the <code><b>-elide</b></code>
        text widget tag option for collapsing a row), this option is not
        supported for Tk versions earlier than 8.3.</p>
      </blockquote>
    </dd>

    <dd id="width">
      <table border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td>Command-Line Name:&nbsp;</td>

          <td><code><b>-width</b></code></td>
        </tr>

        <tr>
          <td>Database Name:</td>

          <td><code><b>&nbsp;width</b></code></td>
        </tr>

        <tr>
          <td>Database Class:</td>

          <td><code><b>&nbsp;Width</b></code></td>
        </tr>
      </table>

      <blockquote>
        <p>Specifies the desired width for the window, in average-size
        characters of the widget's font.&nbsp; If zero or less then the desired
        width for the window is made just large enough to hold all the columns
        in the tablelist widget.</p>
      </blockquote>
    </dd>

    <dt id="col_options"><b>COLUMN CONFIGURATION OPTIONS</b></dt>

    <dd>The following options are currently supported by the <code><b><a href=
    "#columncget">columncget</a></b></code>, <code><b><a href=
    "#columnconfigure">columnconfigure</a></b></code>, <code><b><a href=
    "#configcolumnlist">configcolumnlist</a></b></code>, and <code><b><a href=
    "#configcolumns">configcolumns</a></b></code> commands:</dd>

    <dd>
      <dl>
        <dt class="tm" id="col_align"><code><b>-align</b>
        <i>alignment</i></code></dt>

        <dd>Specifies how to align the elements of the column.&nbsp; It must be
        one of <code><b>left</b></code>, <code><b>right</b></code>, or
        <code><b>center</b></code>.&nbsp; This option also refers to the
        column's title if the <code><b><a href=
        "#col_labelalign">-labelalign</a></b></code> option hasn't been
        specified for the given column, or if its value is an empty
        string.&nbsp; The <code><b>-align</b></code> option is tied to the
        <code><i>alignment</i></code> element corresponding to this column in
        the list specifying the value of the <code><b><a href=
        "#columns">-columns</a></b></code> option for the tablelist widget;
        changes in either will automatically be reflected in the other.</dd>

        <dt class="tm" id="col_background"><code><b>-background</b>
        <i>color</i></code> or <code><b>-bg</b> <i>color</i></code></dt>

        <dd>Specifies the normal background color to use when displaying the
        contents of the column.</dd>

        <dt class="tm" id="col_changesnipside"><code><b>-changesnipside</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether to override the alignment-specific default
        position of the <a href="#snipstring">snip indicator</a> when
        displaying the elements of the column (excluding its title).&nbsp; The
        default value is <code>0</code>, meaning that the snip string will be
        appended to the elements if the column's alignment is
        <code><b>left</b></code> or <code><b>center</b></code> and prepended to
        them in case the alignment is <code><b>right</b></code>.</dd>

        <dt class="tm" id="col_editable"><code><b>-editable</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether the elements of the column can be edited
        interactively.&nbsp; The default value is <code>0</code>.&nbsp; The
        value of this option can be overridden for individual cells by using
        the <a href="#cell_editable">cell configuration option</a> of the same
        name.</dd>

        <dt class="tm" id="col_editwindow"><code><b>-editwindow</b>
        <i>name</i></code></dt>

        <dd>Specifies the type of the temporary embedded widget to be used for
        interactive editing of the contents of the given column's cells.&nbsp;
        <code><i>name</i></code> may be one of <code><b>entry</b></code> (which
        is the default), <code><b>text</b></code>, <code><b>spinbox</b></code>
        (the latter for Tk versions 8.4 or higher),
        <code><b>checkbutton</b></code>, <code><b>menubutton</b></code>,
        <code><b>ttk::entry</b></code>, <code><b>ttk::spinbox</b></code>,
        <code><b>ttk::combobox</b></code>,
        <code><b>ttk::checkbutton</b></code>, or
        <code><b>ttk::menubutton</b></code> (the latter five only in the
        presence of the tile widget engine), or the value returned by one of
        the registration commands for widgets from the packages <a href=
        "tablelistBWidget.html">BWidget</a>, <a href=
        "tablelistIwidgets.html">Iwidgets</a>, <a href=
        "tablelistCombobox.html">combobox</a> (by Bryan Oakley), <a href=
        "tablelistCtext.html">ctext</a>, and <a href=
        "tablelistMentry.html">Mentry (or Mentry_tile)</a>.&nbsp; For example,
        you can use&nbsp; <code><b>-editwindow ComboBox</b></code>&nbsp;
        <i>after</i> registering the ComboBox widget for interactive cell
        editing with the aid of the <code><b><a href=
        "tablelistBWidget.html#ComboBox">tablelist::addBWidgetComboBox</a></b></code>
        command.&nbsp; Similarly, you can use&nbsp; <code><b>-editwindow
        combobox</b></code>&nbsp; <i>after</i> registering Bryan Oakley's
        combobox widget for interactive cell editing by invoking the
        <code><b><a href=
        "tablelistCombobox.html#combobox">tablelist::addOakleyCombobox</a></b></code>
        command.&nbsp; The value of this option can be overridden for
        individual cells by using the <a href="#cell_editwindow">cell
        configuration option</a> of the same name.</dd>

        <dt class="tm" id="col_font"><code><b>-font</b> <i>font</i></code></dt>

        <dd>Specifies the font to use when displaying the contents of the
        column.</dd>

        <dt class="tm" id="col_foreground"><code><b>-foreground</b>
        <i>color</i></code> or <code><b>-fg</b> <i>color</i></code></dt>

        <dd>Specifies the normal foreground color to use when displaying the
        contents of the column.</dd>

        <dt class="tm" id="col_formatcommand"><code><b>-formatcommand</b>
        <i>command</i></code></dt>

        <dd>Specifies a Tcl command to be invoked when displaying the content
        of a cell within this column or adding it to the selection when the
        latter is being exported.&nbsp; If <code><i>command</i></code> is a
        nonempty string, then it is automatically concatenated with the cell's
        text, the resulting script is evaluated in the global scope, and the
        return value is displayed in the cell or added to the selection instead
        of the original data.</dd>

        <dd class="tm">For example, if a time value in seconds is being
        inserted into the cell and <code><i>command</i></code> is the procedure
        <code>formatDate</code> defined as</dd>

        <dd>
          <blockquote>
            <pre>
proc formatDate clockVal {
    return [clock format $clockVal -format "%Y-%m-%d"]
}
</pre>
          </blockquote>
        </dd>

        <dd>then the text displayed in the cell will be the date in the
        specified format, not the time value in seconds.</dd>

        <dd class="tm">This option is also used by Tablelist when building the
        return values of the <code><b><a href=
        "#getformatted">getformatted</a></b></code>, <code><b><a href=
        "#getformattedcolumns">getformattedcolumns</a></b></code>, and
        <code><b><a href="#getformattedcells">getformattedcells</a></b></code>
        subcommands, or searching for a text pattern passed to the
        <code><b><a href="#searchcolumn">searchcolumn</a></b></code> subcommand
        with the <code><b>-formatted</b></code> option.&nbsp; All the other
        subcommands, notably <code><b><a href="#get">get</a></b></code>,
        <code><b><a href="#getcolumns">getcolumns</a></b></code>,
        <code><b><a href="#getcells">getcells</a></b></code>, <code><b><a href=
        "#rowcget">rowcget</a></b></code>, <code><b><a href=
        "#columncget">columncget</a></b></code>, <code><b><a href=
        "#cellcget">cellcget</a></b></code>, <code><b><a href=
        "#sort">sort</a></b></code>, <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code>, <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code>, and
        <code><b><a href="#refreshsorting">refreshsorting</a></b></code>
        operate on the original cell text, which is contained in the widget's
        internal list.&nbsp; In the case of the above example, this will make
        it possible to sort the items quite easily by time, with a second's
        precision, even if their visual representation only contains the year,
        month, and day.</dd>

        <dd class="tm">The <code><b>-formatcommand</b></code> option comes in
        handy if only images or embedded windows are to be displayed in a
        column but the texts associated with the cells may not simply be empty
        strings because they are needed for other purposes (like sorting or
        editing).&nbsp; In such cases, a procedure returning an empty string
        can be used as the option's value, thus making sure that the textual
        information contained in that column remains hidden.</dd>

        <dd class="tm">The demo scripts included in the Tablelist distribution
        contain further examples demonstrating the use of this option.&nbsp;
        The most interesting ones are also described in <a href=
        "tablelist.html">Tablelist Programmer's Guide</a>.</dd>

        <dd class="tm">In the more sophisticated case that the result of the
        formatting should also depend on the cell's row, you will have to
        invoke the <code><b><a href="#formatinfo">formatinfo</a></b></code>
        subcommand, which provides the necessary information about the cell
        whose content is being formatted.</dd>

        <dd class="tm" id="col_formatted">Due to the
        <code><b>-formatcommand</b></code> column configuration option, we will
        distinguish between the internal value of a tablelist element and its
        <b>formatted</b> version.&nbsp; The latter is the result of the
        invocation of the script corresponding to the
        <code><b>-formatcommand</b></code> option of the element's column, or
        the element itself if this option was not set for that column.&nbsp;
        Consequently, the formatted version of a tablelist item is a list
        comprised of the formatted elements of the original item.</dd>

        <dt class="tm" id="col_hide"><code><b>-hide</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether to hide the column when displaying the widget or
        exporting its selection.&nbsp; The default value is
        <code>0</code>.&nbsp; After toggling the hidden state of a column, the
        <code><b>&lt;&lt;TablelistColHiddenStateChanged&gt;&gt;</b></code>
        virtual event is generated, with its <code><b>-data</b></code> option
        set to the numerical column index for Tk versions 8.5 or higher.</dd>

        <dt class="tm" id="col_labelalign"><code><b>-labelalign</b>
        <i>alignment</i></code></dt>

        <dd>Specifies how to align the column's title.&nbsp; It must be one of
        <code><b>left</b></code>, <code><b>right</b></code>, or
        <code><b>center</b></code>, or an empty string.&nbsp; If this option
        hasn't been specified for the given column, or if its value is an empty
        string, then the header title will have the same alignment as the
        elements of the column, as given by the <code><b><a href=
        "#col_align">-align</a></b></code> column configuration option or by
        the <code><i>alignment</i></code> element corresponding to this column
        in the list specifying the value of the <code><b><a href=
        "#columns">-columns</a></b></code> global option.</dd>

        <dt class="tm" id="col_labelopts"><code><b>-labelbackground</b>
        <i>color</i></code> or <code><b>-labelbg</b> <i>color</i></code><br>
        <code><b>-labelborderwidth</b> <i>screenDistance</i></code> or
        <code><b>-labelbd</b> <i>screenDistance</i></code><br>
        <code><b>-labelcommand</b> <i>command</i></code><br>
        <code><b>-labelcommand2</b> <i>command</i></code><br>
        <code><b>-labelfont</b> <i>fontName</i></code><br>
        <code><b>-labelforeground</b> <i>color</i></code> or
        <code><b>-labelfg</b> <i>color</i></code><br>
        <code><b>-labelheight</b> <i>lines</i></code><br>
        <code><b>-labelpady</b> <i>screenDistance</i></code><br>
        <code><b>-labelrelief</b> <i>relief</i></code></dt>

        <dd>The value of each of these options may also be an empty
        string.&nbsp; These options are the column-specific equivalents of the
        global ones having the same names, described in the <a href=
        "#widget_options">WIDGET-SPECIFIC OPTIONS</a> section.&nbsp; They
        override the options of the same names set at widget level if the
        specified value is not empty.&nbsp; If one of these options hasn't been
        specified for the given column, or if its value is an empty string,
        then that option will not be used at column level; the global option of
        the same name will be used instead.&nbsp; The <code><b><a href=
        "#labelactivebackground">-labelactivebackground</a></b></code>,
        <code><b><a href=
        "#labelactiveforeground">-labelactiveforeground</a></b></code>, and
        <code><b><a href=
        "#labeldisabledforeground">-labeldisabledforeground</a></b></code>
        options are only defined at widget level; there are no column
        configuration options with these names.&nbsp; The
        <code><b>-labelbackground</b></code> and
        <code><b>-labelheight</b></code> options are only supported by the
        Tablelist package, but not by Tablelist_tile.</dd>

        <dt class="tm" id="col_labelimage"><code><b>-labelimage</b>
        <i>image</i></code></dt>

        <dd>Specifies the name of the Tk image to be displayed in the header
        label.&nbsp; <code><i>image</i></code> must be the result of an
        invocation of the&nbsp; <code><b>image create</b></code>&nbsp; command,
        or an empty string, specifying that no image is to be displayed.&nbsp;
        If the label's text is right-aligned then the image will be displayed
        to the right of the text, otherwise to its left.&nbsp; The text and the
        image are separated from each other by a gap corresponding to the width
        of a space character in the given label's font.</dd>

        <dt class="tm" id="col_maxwidth"><code><b>-maxwidth</b>
        <i>width</i></code></dt>

        <dd><code><i>width</i></code> must be a number.&nbsp; A positive value
        specifies the column's maximum width in average-size characters of the
        widget's font.&nbsp; If <code><i>width</i></code> is negative, its
        absolute value is interpreted as a maximum column width in
        pixels.&nbsp; Finally, a value of zero (which is the default) specifies
        that the column's maximum width is to be made just large enough to hold
        all the elements in the column, including its header.&nbsp; This option
        is only relevant if the given column has dynamic width, i.e., if its
        width was set to <code>0</code>.</dd>

        <dt class="tm" id="col_name"><code><b>-name</b> <i>name</i></code></dt>

        <dd>Specifies a name associated with the column.&nbsp; While the
        numerical index of a column might change by inserting, deleting, or
        moving columns, its name remains constant and can be used as a safe
        alternative column index (see the <a href="#col_indices">COLUMN
        INDICES</a> section for details).&nbsp; Similarly, it can also be used
        as the second component of a cell index of the form
        <code><i>row</i><b>,</b><i>col</i></code>, as described in the <a href=
        "#cell_indices">CELL INDICES</a> section.&nbsp; To avoid ambiguities,
        column names should be different from any other forms of column indices
        (like numbers, <code><b>active</b></code>, <code><b>anchor</b></code>,
        <code><b>end</b></code>, <code><b>left</b></code>,
        <code><b>right</b></code>, or any of their abbreviations).&nbsp; They
        should also be different from (any abbreviations of) the string
        <code><b>all</b></code>, which may be specified as the value of the
        <code><b><a href="#stretch">-stretch</a></b></code> configuration
        option.&nbsp; The default value is an empty string.</dd>

        <dt class="tm" id="col_resizable"><code><b>-resizable</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether the column can be resized interactively.&nbsp;
        See the <a href="#label_bindings">DEFAULT AND INDIVIDUAL BINDINGS FOR
        THE HEADER LABELS</a> section for information on interactive column
        resizing.&nbsp; The default value is <code>1</code>.&nbsp; This option
        is only relevant if the value of the <code><b><a href=
        "#resizablecolumns">-resizablecolumns</a></b></code> widget
        configuration option is true.</dd>

        <dt class="tm" id="col_selectbackground"><code><b>-selectbackground</b>
        <i>color</i></code></dt>

        <dd>Specifies the background color to use when displaying the contents
        of a cell in the given column while the cell is selected.</dd>

        <dt class="tm" id="col_selectforeground"><code><b>-selectforeground</b>
        <i>color</i></code></dt>

        <dd>Specifies the foreground color to use when displaying the contents
        of a cell in the given column while the cell is selected.</dd>

        <dt class="tm" id="col_showarrow"><code><b>-showarrow</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether the <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code> command with the given
        column index as first argument and the <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> command having the
        given column index as element of its first argument should place an
        arrow indicating the sort order into the column's label.&nbsp; The
        default value is <code>1</code>.&nbsp; This option is only relevant if
        the value of the <code><b><a href=
        "#showarrow">-showarrow</a></b></code> widget configuration option is
        true.</dd>

        <dt class="tm" id="col_showlinenumbers"><code><b>-showlinenumbers</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether the given column should display the line numbers
        (starting with 1 and ending with the number of the non-hidden
        rows).&nbsp; The default value is <code>0</code>.</dd>

        <dd class="tm">The following details assume that the given column's
        <code><b>-showlinenumbers</b></code> option was set to true:&nbsp;
        Associating the line numbers with the non-hidden rows takes place
        automatically whenever items are inserted, deleted, updated, moved, or
        sorted, or their <code><b><a href="#row_hide">-hide</a></b></code>
        option is toggled.&nbsp; For increased efficiency, this is done at idle
        time.&nbsp; For example, if several items are inserted into or deleted
        from the tablelist widget, then the necessary renumbering of the
        non-hidden rows will be performed as an idle callback, the next time
        the event loop is entered and there are no events to process.&nbsp; The
        line numbers will override any previous contents of the column's
        cells.&nbsp; They are, per default, displayed without leading zeros,
        but this (and the display format in general) can be changed with the
        aid of the <code><b><a href=
        "#col_formatcommand">-formatcommand</a></b></code> column configuration
        option.</dd>

        <dd class="tm">The <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code> and <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> subcommands as well
        as the <code><b><a href=
        "tablelistColSort.html#sortByColumn">tablelist::sortByColumn</a></b></code>
        and <code><b><a href=
        "tablelistColSort.html#addToSortColumns">tablelist::addToSortColumns</a></b></code>
        commands check the column indices passed to them as arguments and don't
        perform any sorting by those columns that have been configured to
        display the line numbers (see the corresponding descriptions for
        details).</dd>

        <dd class="tm"><b>REMARK:</b>&nbsp; Please note that the line numbers
        refer to the <i>non-hidden</i> rows, which in case of a tablelist used
        as a tree widget might be different from the <a href=
        "#isviewable">viewable</a> ones.&nbsp; Consequently, collapsing a row
        will, in general, not lead to renumbering the lines (instead, it will
        just elide the corresponding range of line numbers).</dd>

        <dt class="tm" id="col_sortcommand"><code><b>-sortcommand</b>
        <i>command</i></code></dt>

        <dd>This option is only relevant if the value of the <code><b><a href=
        "#col_sortmode">-sortmode</a></b></code> option for the given column is
        <code><b>command</b></code>.&nbsp; It specifies a command to be used
        for the comparison of the column's elements when invoking the
        <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> command
        with the given column index as first argument or the <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> command having the
        given column index as element of its first argument.&nbsp; To compare
        two elements during the <code><b>sortbycolumn</b></code> or
        <code><b>sortbycolumnlist</b></code> operation,
        <code><i>command</i></code> is automatically concatenated with the two
        elements and the resulting script is evaluated.&nbsp; The script should
        return an integer less than, equal to, or greater than zero if the
        first element is to be considered less than, equal to, or greater than
        the second, respectively.</dd>

        <dt class="tm" id="col_sortmode"><code><b>-sortmode</b>
        <i>mode</i></code></dt>

        <dd>Specifies how to compare the column's elements when invoking the
        <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> command
        with the given column index as first argument or the <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> command having the
        given column index as element of its first argument.&nbsp;
        <code><i>mode</i></code> may have any of the following values:</dd>

        <dd class="tm">
          <table border="0" cellpadding="6" cellspacing="0">
            <tr valign="top">
              <td><code><b>ascii</b></code></td>

              <td>Use string comparison with Unicode code-point collation order
              (the name is for backward-compatibility reasons).&nbsp; This is
              the default.</td>
            </tr>

            <tr valign="top">
              <td><code><b>asciinocase&nbsp;&nbsp;</b></code></td>

              <td>This is the same as <code><b>ascii</b></code>, except that
              comparisons are handled in a case-insensitive manner.</td>
            </tr>

            <tr valign="top">
              <td><code><b>command</b></code></td>

              <td>Use the command specified by the <code><b><a href=
              "#col_sortcommand">-sortcommand</a></b></code> column
              configuration option to compare the column's elements.</td>
            </tr>

            <tr valign="top">
              <td><code><b>dictionary</b></code></td>

              <td>Use dictionary-style comparison.&nbsp; This is the same as
              <code><b>ascii</b></code>, except: (a) case is ignored except as
              a tie-breaker; (b) if two strings contain embedded numbers, the
              numbers compare as integers, not characters.&nbsp; For example,
              <code>bigBoy</code> sorts between <code>bigbang</code> and
              <code>bigboy</code>, and <code>x10y</code> sorts between
              <code>x9y</code> and <code>x11y</code>.</td>
            </tr>

            <tr valign="top">
              <td><code><b>integer</b></code></td>

              <td>Convert the elements to integers and use integer
              comparison.</td>
            </tr>

            <tr valign="top">
              <td><code><b>real</b></code></td>

              <td>Convert the elements to floating-point values and use
              floating-point comparison.</td>
            </tr>
          </table>
        </dd>

        <dt class="tm" id="col_stretchable"><code><b>-stretchable</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether the column is to be stretched in order to fill
        the tablelist window if necessary.&nbsp; The value of this option is
        tied to that of the <code><b><a href="#stretch">-stretch</a></b></code>
        option for the tablelist widget; changes in either will automatically
        be reflected in the other.</dd>

        <dt class="tm" id="col_stripebackground"><code><b>-stripebackground</b>
        <i>color</i></code></dt>

        <dd>Specifies the background color to use when displaying the contents
        of a cell in the given column if the cell's row belongs to a
        stripe.</dd>

        <dt class="tm" id="col_stripeforeground"><code><b>-stripeforeground</b>
        <i>color</i></code></dt>

        <dd>Specifies the foreground color to use when displaying the contents
        of a cell in the given column if the cell's row belongs to a
        stripe.</dd>

        <dt class="tm" id="col_text"><code><b>-text</b> <i>list</i></code></dt>

        <dd>Specifies a list of strings to be displayed in the cells of the
        given column, i.e., updates the elements contained in the column.&nbsp;
        If the tablelist's <code><b><a href="#state">state</a></b></code> is
        <code><b>disabled</b></code> then this option will be ignored.</dd>

        <dt class="tm" id="col_title"><code><b>-title</b>
        <i>title</i></code></dt>

        <dd>Specifies the text to be displayed in the column's header.&nbsp;
        This option is tied to the <code><i>title</i></code> element
        corresponding to the given column in the list specifying the value of
        the <code><b><a href="#columns">-columns</a></b></code> option for the
        tablelist widget; changes in either will automatically be reflected in
        the other.</dd>

        <dt class="tm" id="col_valign"><code><b>-valign</b>
        <i>verticalAlignment</i></code></dt>

        <dd>Specifies the vertical alignment of embedded images and windows
        displayed in the given column.&nbsp; The
        <code><i>verticalAlignment</i></code> must be one of
        <code><b>center</b></code> (which is the default),
        <code><b>top</b></code>, or <code><b>bottom</b></code>.&nbsp;
        Especially in rows containing multi-line elements, embedded images or
        windows are often not as tall as the rows themselves; in such cases,
        this option enables you to control the column-dependent vertical
        alignment of these embedded objects.&nbsp; The value of this option can
        be overridden for individual cells by using the <a href=
        "#cell_valign">cell configuration option</a> of the same name.</dd>

        <dt class="tm" id="col_width"><code><b>-width</b>
        <i>width</i></code></dt>

        <dd><code><i>width</i></code> must be a number.&nbsp; A positive value
        specifies the column's width in average-size characters of the widget's
        font.&nbsp; If <code><i>width</i></code> is negative, its absolute
        value is interpreted as a column width in pixels.&nbsp; Finally, a
        value of zero specifies that the column's width is to be made just
        large enough to hold all the elements in the column, including its
        header (but no larger than the maximum width indicated by the
        <code><b><a href="#col_maxwidth">-maxwidth</a></b></code> column
        configuration option).&nbsp; This option is tied to the
        <code><i>width</i></code> element corresponding to the given column in
        the list specifying the value of the <code><b><a href=
        "#columns">-columns</a></b></code> option for the tablelist widget;
        changes in either will automatically be reflected in the other.</dd>

        <dt class="tm" id="col_wrap"><code><b>-wrap</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether to display those elements of the given column
        that don't fit into their cells in word-wrapped multi-line rather than
        snipped form.&nbsp; The default value is <code>0</code>.&nbsp; If the
        specified column has static width and the value of this option is true
        then elements of the column that are too long to be displayed in a
        single line will be broken up into several lines.&nbsp; The same
        applies to the individual lines of the multi-line elements (i.e.,
        elements containing newline characters): they will also be wrapped if
        necessary, thus giving rise to additional line breaks.&nbsp; In both
        cases, the line breaks are chosen at word boundaries wherever possible,
        and they are only used for the external representation of the strings
        contained in the given column, without affecting the internal contents
        of the cells.</dd>
      </dl>
    </dd>

    <dd class="tm">The <code><b>-background</b></code>,
    <code><b>-font</b></code>, <code><b>-foreground</b></code>,
    <code><b>-selectbackground</b></code>,
    <code><b>-selectforeground</b></code>,
    <code><b>-stripebackground</b></code>, and
    <code><b>-stripeforeground</b></code> column configuration options override
    the options of the same names set at widget level (but not the ones set at
    cell or row level) if the specified value is not an empty string.&nbsp; See
    the <a href="#colors_and_fonts">COLORS AND FONTS</a> section for further
    details on these options.</dd>

    <dt class="tm" id="row_options"><b>ROW CONFIGURATION OPTIONS</b></dt>

    <dd>The following options are currently supported by the <code><b><a href=
    "#rowcget">rowcget</a></b></code>, <code><b><a href=
    "#rowconfigure">rowconfigure</a></b></code>, <code><b><a href=
    "#configrowlist">configrowlist</a></b></code>, and <code><b><a href=
    "#configrows">configrows</a></b></code> commands:</dd>

    <dd>
      <dl>
        <dt class="tm" id="row_background"><code><b>-background</b>
        <i>color</i></code> or <code><b>-bg</b> <i>color</i></code></dt>

        <dd>Specifies the normal background color to use when displaying the
        contents of the row.</dd>

        <dt class="tm" id="row_font"><code><b>-font</b> <i>font</i></code></dt>

        <dd>Specifies the font to use when displaying the contents of the
        row.</dd>

        <dt class="tm" id="row_foreground"><code><b>-foreground</b>
        <i>color</i></code> or <code><b>-fg</b> <i>color</i></code></dt>

        <dd>Specifies the normal foreground color to use when displaying the
        contents of the row.</dd>

        <dt class="tm" id="row_hide"><code><b>-hide</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether to hide the row when displaying the widget or
        exporting its selection.&nbsp; The default value is
        <code>0</code>.&nbsp; After toggling the hidden state of a row, the
        <code><b>&lt;&lt;TablelistRowHiddenStateChanged&gt;&gt;</b></code>
        virtual event is generated, with its <code><b>-data</b></code> option
        set to the numerical row index for Tk versions 8.5 or higher.</dd>

        <dd class="tm">For technical reasons (the use of the
        <code><b>-elide</b></code> option for a text widget tag), this option
        is not supported for Tk versions earlier than 8.3.</dd>

        <dd class="tm"><b>CAUTION:</b>&nbsp; Tk versions 8.3 - 8.4.12 had a bug
        that caused a segmentation fault if the whole content of a text widget
        was elided.&nbsp; This bug was also present in Tk 8.5.a1 -
        8.5.a3.&nbsp; When using one of these earlier Tk versions, this bug
        will produce a crash if all the rows of a tablelist widget are
        hidden.&nbsp; It is your responsibility to avoid such situations when
        using a Tk version having this bug!</dd>

        <dt class="tm" id="row_name"><code><b>-name</b> <i>name</i></code></dt>

        <dd>Specifies a name associated with the row.&nbsp; While the numerical
        index of a row might change by inserting, deleting, or moving rows, or
        by sorting the items, its name remains constant and can be used as a
        safe alternative row index (see the <a href="#row_indices">ROW
        INDICES</a> section for details).&nbsp; Similarly, it can also be used
        as the first component of a cell index of the form
        <code><i>row</i><b>,</b><i>col</i></code>, as described in the <a href=
        "#cell_indices">CELL INDICES</a> section.&nbsp; To avoid ambiguities,
        row names should be different from any other forms of row indices (like
        numbers, full keys, <code><b>active</b></code>,
        <code><b>anchor</b></code>, <code><b>end</b></code>,
        <code><b>top</b></code>, <code><b>bottom</b></code>, or any of their
        abbreviations).&nbsp; The default value is an empty string.</dd>

        <dt class="tm" id="row_selectable"><code><b>-selectable</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether the elements displayed in the given row can be
        selected.&nbsp; The default value is <code>1</code>.&nbsp; If the value
        <code>0</code> was given then any attempt to select the item contained
        in this row with the aid of the&nbsp; <code><b><a href=
        "#selection">selection set</a></b></code>&nbsp; widget command or any
        of its elements by using the&nbsp; <code><b><a href=
        "#cellselection">cellselection set</a></b></code>&nbsp; command will be
        silently ignored; moreover, an existing old (cell) selection is removed
        from the row.</dd>

        <dt class="tm" id="row_selectbackground"><code><b>-selectbackground</b>
        <i>color</i></code></dt>

        <dd>Specifies the background color to use when displaying the contents
        of a cell in the given row while the cell is selected.</dd>

        <dt class="tm" id="row_selectforeground"><code><b>-selectforeground</b>
        <i>color</i></code></dt>

        <dd>Specifies the foreground color to use when displaying the contents
        of a cell in the given row while the cell is selected.</dd>

        <dt class="tm" id="row_text"><code><b>-text</b> <i>list</i></code></dt>

        <dd>Specifies a list of strings to be displayed in the cells of the
        given row, i.e., updates the item contained in the row.&nbsp; If the
        tablelist's <code><b><a href="#state">state</a></b></code> is
        <code><b>disabled</b></code> then this option will be ignored.</dd>
      </dl>
    </dd>

    <dd class="tm">The <code><b>-background</b></code>,
    <code><b>-font</b></code>, <code><b>-foreground</b></code>,
    <code><b>-selectbackground</b></code>, and
    <code><b>-selectforeground</b></code> row configuration options override
    the options of the same names set at column or widget level (but not the
    ones set at cell level) if the specified value is not an empty
    string.&nbsp; See the <a href="#colors_and_fonts">COLORS AND FONTS</a>
    section for further details on these options.</dd>

    <dt class="tm" id="cell_options"><b>CELL CONFIGURATION OPTIONS</b></dt>

    <dd>The following options are currently supported by the <code><b><a href=
    "#cellcget">cellcget</a></b></code>, <code><b><a href=
    "#cellconfigure">cellconfigure</a></b></code>, <code><b><a href=
    "#configcelllist">configcelllist</a></b></code>, and <code><b><a href=
    "#configcells">configcells</a></b></code> commands:</dd>

    <dd>
      <dl>
        <dt class="tm" id="cell_background"><code><b>-background</b>
        <i>color</i></code> or <code><b>-bg</b> <i>color</i></code></dt>

        <dd>Specifies the normal background color to use when displaying the
        contents of the cell.</dd>

        <dt class="tm" id="cell_editable"><code><b>-editable</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether the contents of the cell can be edited
        interactively.&nbsp; The default value is <code>0</code>.&nbsp; This
        option overrides <a href="#col_editable">the one of the same name</a>
        for the column containing the given cell.</dd>

        <dt class="tm" id="cell_editwindow"><code><b>-editwindow</b>
        <i>name</i></code></dt>

        <dd>Specifies the type of the temporary embedded widget to be used for
        interactive editing of the cell's contents.&nbsp; The default value is
        <code><b>entry</b></code>.&nbsp; This option overrides <a href=
        "#col_editwindow">the one of the same name</a> for the column
        containing the given cell, and may have the same values as its
        column-related counterpart.</dd>

        <dt class="tm" id="cell_font"><code><b>-font</b>
        <i>font</i></code></dt>

        <dd>Specifies the font to use when displaying the contents of the
        cell.</dd>

        <dt class="tm" id="cell_foreground"><code><b>-foreground</b>
        <i>color</i></code> or <code><b>-fg</b> <i>color</i></code></dt>

        <dd>Specifies the normal foreground color to use when displaying the
        contents of the cell.</dd>

        <dt class="tm" id="cell_image"><code><b>-image</b>
        <i>image</i></code></dt>

        <dd>Specifies the name of the Tk image to be displayed in the
        cell.&nbsp; <code><i>image</i></code> must be the result of an
        invocation of the&nbsp; <code><b>image create</b></code>&nbsp; command,
        or an empty string, specifying that no image is to be displayed.&nbsp;
        If the column containing the cell is right-aligned then the image will
        be displayed to the right of the cell's text, otherwise to its
        left.&nbsp; The text and the image are separated from each other by a
        gap of 4 pixels.&nbsp; If for the same cell the <code><b><a href=
        "#cell_window">-window</a></b></code> option was specified with a
        nonempty value then it overrides the <code><b>-image</b></code>
        option.&nbsp; If the tablelist's <code><b><a href=
        "#state">state</a></b></code> is <code><b>disabled</b></code> then this
        option will be ignored.</dd>

        <dd class="tm">To display an image in a cell, Tablelist makes use of an
        embedded label widget (which is created on demand).&nbsp; This requires
        more memory than inserting the image directly into the tablelist's
        body, but has the main advantage of making it possible to adjust the
        width of the label containing the widget to fit into its column.&nbsp;
        This has the visual effect of cutting off part of the image from its
        right side.&nbsp; To make sure that images with transparent background
        will be displayed correctly, the background color of the label widgets
        containing the embedded images is automatically updated whenever
        necessary.</dd>

        <dt class="tm" id="cell_selectbackground">
        <code><b>-selectbackground</b> <i>color</i></code></dt>

        <dd>Specifies the background color to use when displaying the contents
        of the cell while it is selected.</dd>

        <dt class="tm" id="cell_selectforeground">
        <code><b>-selectforeground</b> <i>color</i></code></dt>

        <dd>Specifies the foreground color to use when displaying the contents
        of the cell while it is selected.</dd>

        <dt class="tm" id="cell_stretchwindow"><code><b>-stretchwindow</b>
        <i>boolean</i></code></dt>

        <dd>Specifies whether the width of the window embedded into the cell
        shall be adapted dynamically to the width of the cell's column if the
        latter is non-zero (i.e., static).&nbsp; The default value is
        <code>0</code>.&nbsp; If the value of this option is true and the
        column was specified with a non-zero width or was resized
        interactively, then the width of the embedded window (if any) will be
        adjusted automatically so the window fills the whole horizontal space
        belonging to that column (except the left and right margins).&nbsp;
        Please note that in this case the cell's text will remain hidden.&nbsp;
        On the other hand, if the column is of dynamic width then this option
        will be ignored and both the cell's text and its embedded window (if
        any) will be displayed as usual.&nbsp; The easiest way to avoid this
        discrepancy is to set the cell's text to an empty string or make sure
        that the column's elements are always displayed as empty strings, by
        using the <code><b><a href=
        "#col_formatcommand">-formatcommand</a></b></code> column configuration
        option.</dd>

        <dt class="tm" id="cell_text"><code><b>-text</b>
        <i>text</i></code></dt>

        <dd>Specifies the string to be displayed in the given cell, i.e.,
        updates the element contained in the cell.&nbsp; If the tablelist's
        <code><b><a href="#state">state</a></b></code> is
        <code><b>disabled</b></code> then this option will be ignored.</dd>

        <dt class="tm" id="cell_valign"><code><b>-valign</b>
        <i>verticalAlignment</i></code></dt>

        <dd>Specifies the vertical alignment of the embedded image or window
        displayed in the cell (if any).&nbsp; The default value is
        <code><b>center</b></code>.&nbsp; This option overrides <a href=
        "#col_valign">the one of the same name</a> for the column containing
        the given cell, and may have the same values as its column-related
        counterpart.</dd>

        <dt class="tm" id="cell_window"><code><b>-window</b>
        <i>command</i></code></dt>

        <dd>Specifies a Tcl command creating the window to be embedded into the
        cell.&nbsp; The command is automatically concatenated with the name of
        the tablelist widget, the cell's row and column indices, as well as the
        path name of the embedded window to be created, and the resulting
        script is evaluated in the global scope.&nbsp;
        <code><i>command</i></code> may also be an empty string, specifying
        that no embedded window is to be displayed.&nbsp; If the column
        containing the cell is right-aligned then the window will be displayed
        to the right of the cell's text, otherwise to its left.&nbsp; The text
        and the window are separated from each other by a gap of 4
        pixels.&nbsp; If this option was specified with a nonempty value then
        it overrides the <code><b><a href="#cell_image">-image</a></b></code>
        cell configuration option.&nbsp; If the tablelist's <code><b><a href=
        "#state">state</a></b></code> is <code><b>disabled</b></code> then this
        option will be ignored.</dd>

        <dd class="tm"><b>REMARK:</b>&nbsp; There are several situations where
        the embedded window will be destroyed and later recreated by invoking
        the script mentioned above.&nbsp; For example, when changing the value
        of some of the tablelist widget or column configuration options,
        sorting the items, or moving a row or a column, the widget's contents
        will be redisplayed, which makes it necessary to recreate the embedded
        windows.&nbsp; This operation won't preserve the changes made on the
        embedded windows after their creation.&nbsp; For this reason, you
        should avoid any changes on embedded windows outside their creation
        scripts.</dd>

        <dt class="tm" id="cell_windowdestroy"><code><b>-windowdestroy</b>
        <i>command</i></code></dt>

        <dd>Specifies a Tcl command to be invoked when a window embedded into
        the cell is destroyed.&nbsp; The command is automatically concatenated
        with the name of the tablelist widget, the cell's row and column
        indices, as well as the path name of the embedded window, and the
        resulting script is evaluated in the global scope.&nbsp; This option
        provides an easy-to-use alternative to binding a script to the embedded
        window's <code><b>&lt;Destroy&gt;</b></code> event from within its
        creation script, specified as the value of the <code><b><a href=
        "#cell_window">-window</a></b></code> cell configuration option.</dd>

        <dt class="tm" id="cell_windowupdate"><code><b>-windowupdate</b>
        <i>command</i></code></dt>

        <dd>Specifies a Tcl command responsible for adapting the background and
        foreground colors of a window embedded into the cell to the current
        background and foreground colors of the cell itself.&nbsp; The current
        cell colors depend on whether the tablelist widget's <code><b><a href=
        "#state">state</a></b></code> is <code><b>normal</b></code> or
        <code><b>disabled</b></code>, whether the cell is selected, and whether
        its row is displayed with the colors specified by the <code><b><a href=
        "#stripebackground">-stripebackground</a></b></code> and
        <code><b><a href="#stripeforeground">-stripeforeground</a></b></code>
        widget or column configuration options.&nbsp; The command is
        automatically concatenated with the name of the tablelist widget, the
        cell's row and column indices, the path name of the embedded window,
        the option name <code><b>-background</b></code> and the cell's current
        background color, as well as the option name
        <code><b>-foreground</b></code> and the cell's current foreground
        color.&nbsp; The resulting script is then evaluated in the global
        scope.&nbsp; The specified command can use the colors passed to it as
        arguments to set the corresponding colors of the embedded window to the
        same values.</dd>

        <dd class="tm">For example, if the embedded window is a text or ctext
        widget and you want for its background and foreground colors to be
        automatically adapted to the cell's current background and foreground
        colors, then you can achieve this by setting the
        <code><b>-windowupdate</b></code> cell configuration option to
        <code>updateWindow</code>, where the latter is the procedure
        implemented as follows:</dd>

        <dd>
          <blockquote>
            <pre>
proc updateWindow {tbl row col w args} {
    eval [list $w configure] $args
}
</pre>
          </blockquote>
        </dd>

        <dd>With Tcl/Tk 8.5 or above, you can use the more compact form</dd>

        <dd>
          <blockquote>
            <pre>
proc updateWindow {tbl row col w args} {
    $w configure {*}$args
}
</pre>
          </blockquote>
        </dd>

        <dd>In this example, <code>args</code> is a list of the form</dd>

        <dd>
          <blockquote>
            <pre>
-background <i>backgroundColor</i> -foreground <i>foregroundColor</i>
</pre>
          </blockquote>
        </dd>
      </dl>
    </dd>

    <dd>The <code><b>-background</b></code>, <code><b>-font</b></code>,
    <code><b>-foreground</b></code>, <code><b>-selectbackground</b></code>, and
    <code><b>-selectforeground</b></code> cell configuration options override
    the options of the same names set at row, column, or widget level if the
    specified value is not an empty string.&nbsp; See the <a href=
    "#colors_and_fonts">COLORS AND FONTS</a> section for further details on
    these options.</dd>

    <dt class="tm" id="description"><b>DESCRIPTION</b></dt>

    <dd>The <code><b>tablelist::tablelist</b></code> command creates a new
    window named <code><i>pathName</i></code> and of the class
    <code><b>Tablelist</b></code>, and makes it into a <b>tablelist</b>
    widget.&nbsp; Additional options, described above, may be specified on the
    command line or in the option database to configure aspects of the
    tablelist such as its colors, font, and columns.&nbsp; The
    <code><b>tablelist::tablelist</b></code> command returns its
    <code><i>pathName</i></code> argument.&nbsp; At the time this command is
    invoked, there must not exist a window named <code><i>pathName</i></code>,
    but <code><i>pathName</i></code>'s parent must exist.</dd>

    <dd class="tm">A tablelist is a multi-column listbox and tree widget,
    implemented as a mega-widget, consisting of a <b>body</b> and a
    <b>header</b>.&nbsp; The body displays a list of <b>items</b>, one per
    line.&nbsp; Each item is a list of <b>elements</b>, which are aligned in
    columns.&nbsp; In other words, an item is the contents of a row, and an
    element is the text contained in a cell.&nbsp; The header consists of label
    widgets displaying the column titles.&nbsp; The labels can be used, among
    others, for interactive column resizing and column-based sorting of the
    items, as described below.</dd>

    <dd class="tm">Each cell and each header label of a tablelist widget can
    also contain an image, which is placed to the left or right of the text,
    depending on the column's alignment.&nbsp; Instead of an image, a tablelist
    cell can also contain an embedded window, placed to the left or right of
    the text, just like an embedded image.</dd>

    <dd class="tm">When a tablelist is used as a tree widget, one of its
    columns will display the tree hierarchy with the aid of indentations and
    expand/collapse controls.&nbsp; The Tablelist package provides a great
    variety of tree styles controlling the look &amp; feel of that column, and
    chooses the correct default style depending on the windowing system,
    operating system version, and tile theme.&nbsp; In a tablelist used as a
    multi-column tree widget, every row is at the same time a tree <b>node</b>,
    having exactly one <b>parent</b> node and any number of <b>child</b>
    nodes.&nbsp; The tree's origin is the invisible <b>root</b> node, which has
    no parent itself and whose children are the <b>top-level</b> nodes.</dd>

    <dd class="tm">The elements of a tablelist widget can, per default, be only
    edited programmatically.&nbsp; However, interactive editing can be enabled
    for individual cells and for entire columns.&nbsp; Per default, the
    interactive cell editing uses a temporary embedded entry widget, thus
    making sure that all the validation facilities available for entry widgets
    can be used during the editing process.&nbsp; A great variety of widgets
    from the packages BWidget, Iwidgets, combobox (by Bryan Oakley), ctext, and
    Mentry (or Mentry_tile), as well as Tk core text, spinbox, checkbutton, and
    menubutton widgets, along with tile entry, spinbox, combobox, checkbutton,
    and menubutton widgets are also supported as temporary embedded widgets
    used for cell editing.&nbsp; In addition, a rich set of keyboard bindings
    is provided for a comfortable navigation between the editable cells.</dd>

    <dd class="tm">When first created, a new tablelist widget has no
    items.&nbsp; Items may be added, deleted, or updated using widget commands
    described below.&nbsp; In addition, one or more items or elements may be
    selected.&nbsp; If a tablelist widget is exporting its selection (see the
    <code><b>-exportselection</b></code> option), then it will observe the
    standard X11 protocols for handling the selection.&nbsp; Tablelist widget
    selections are available as types <code><b>STRING</b></code> and
    <code><b>UTF8_STRING</b></code>; the value of the selection will be a text
    built by taking all of the rows having at least one <a href=
    "#isviewable">viewable</a> selected element, joining these elements
    together with tabs, and the resulting strings in turn with newlines.&nbsp;
    If a tablelist widget that is exporting its selection is the selection
    owner and some other window claims ownership of the selection away from it,
    then the virtual event
    <code><b>&lt;&lt;TablelistSelectionLost&gt;&gt;</b></code> is
    generated.</dd>

    <dd class="tm">It is not necessary for all the elements to be displayed in
    the tablelist widget at once; commands described below may be used to
    change the view in the window.&nbsp; Tablelist widgets allow scrolling in
    both directions using the standard <code><b>-xscrollcommand</b></code> and
    <code><b>-yscrollcommand</b></code> options.&nbsp; They also support
    scanning, as described below.</dd>

    <dd class="tm">Each tablelist widget, as well as each tablelist column,
    row, and cell may have any number of <b>attributes</b>, which can be used
    in commands that create or manipulate tablelist widgets for particular
    purposes.</dd>

    <dt class="tm" id="colors_and_fonts"><b>COLORS AND FONTS</b></dt>

    <dd>The <code><b>-background</b></code>, <code><b>-font</b></code>,
    <code><b>-foreground</b></code>, <code><b>-selectbackground</b></code>, and
    <code><b>-selectforeground</b></code> options can also be specified at
    column, row, and cell level, by using the <code><b><a href=
    "#columnconfigure">columnconfigure</a></b></code> (or <code><b><a href=
    "#configcolumnlist">configcolumnlist</a></b></code>, or <code><b><a href=
    "#configcolumns">configcolumns</a></b></code>), <code><b><a href=
    "#rowconfigure">rowconfigure</a></b></code> (or <code><b><a href=
    "#configrowlist">configrowlist</a></b></code>, or <code><b><a href=
    "#configrows">configrows</a></b></code>), and <code><b><a href=
    "#cellconfigure">cellconfigure</a></b></code> (or <code><b><a href=
    "#configcelllist">configcelllist</a></b></code>, or <code><b><a href=
    "#configcells">configcells</a></b></code>) subcommands of the Tcl command
    associated with the tablelist widget.&nbsp; Likewise, the
    <code><b>-stripebackground</b></code> and
    <code><b>-stripeforeground</b></code> options can also be specified at
    column level.&nbsp; For this reason, a particular cell can have up to four
    values for one and the same color or font option.&nbsp; If these values
    conflict, then the option specified at the highest priority level is
    used.&nbsp; The decreasing priority order is cell, row, column,
    widget.</dd>

    <dd class="tm">If one of these options hasn't been specified at cell, row,
    or column level, or if its value for that level is an empty string (this is
    explicitly allowed), then that option will not be used at that particular
    level.</dd>

    <dt class="tm" id="tree_widget"><b>USING A TABLELIST AS MULTI-COLUMN TREE
    WIDGET</b></dt>

    <dd>When using a tablelist widget to display a tree hierarchy, there are a
    few rules to follow:</dd>

    <dd>
      <ol>
        <li class="tm">Do not use the the widget's <code><b><a href=
        "#listvariable">-listvariable</a></b></code> option, or at least do not
        add new items to the variable specified as its value, because adding
        new items to that list will result in inserting those list elements
        into the widget without respecting the tree's internal structure.</li>

        <li class="tm">Make sure that the column specified by the
        <code><b><a href="#treecolumn">-treecolumn</a></b></code> option is
        left-aligned so the tree structure can be displayed as expected.</li>

        <li class="tm">Use the <code><b><a href=
        "#insertchildren">insertchild(ren)</a></b></code> or <code><b><a href=
        "#insertchildlist">insertchildlist</a></b></code> subcommand rather
        than <code><b><a href="#insert">insert</a></b></code> or
        <code><b><a href="#insertlist">insertlist</a></b></code> for inserting
        new items into the widget.</li>
      </ol>
    </dd>

    <dt class="tm" id="cell_editing"><b>INTERACTIVE CELL EDITING</b></dt>

    <dd>Whether or not the contents of a cell of a tablelist widget can be
    edited interactively, depends on the <code><b>-editable</b></code> option
    on both <a href="#cell_editable">cell</a> and <a href=
    "#col_editable">column</a> level.&nbsp; If the cell-level option was set
    explicitly then its value determines the editability of the cell's
    contents.&nbsp; Otherwise the value of the column-level option is used to
    decide whether the cell can be edited interactively.&nbsp; From this rule
    it follows that you can enable interactive cell editing for a whole column
    by setting its <code><b>-editable</b></code> option to true.&nbsp; To
    exclude some of the column's cells from interactive editing, set their
    <code><b>-editable</b></code> option to false.</dd>

    <dd class="tm">The interactive cell editing is started by the
    <code><b><a href="#editcell">editcell</a></b></code> subcommand, which is
    invoked implicitly by clicking with the left mouse button into an editable
    cell (see the <code><b><a href=
    "#editselectedonly">-editselectedonly</a></b></code> option for details) or
    using keyboard navigation to move from one editable cell into
    another.&nbsp; If the selection type is <code><b>cell</b></code> and the
    location cursor is in an editable cell, then the interactive editing of the
    active element can also be started by pressing <code>Return</code> or
    <code>KP_Enter</code>.&nbsp; Per default, the <code><b>editcell</b></code>
    subcommand creates a temporary entry widget and embeds it into the cell
    whose index was passed to it as argument.&nbsp; You can, however, use the
    <code><b>-editwindow</b></code> <a href="#col_editwindow">column</a> or
    <a href="#cell_editwindow">cell</a> configuration option to specify another
    widget instead of an entry, like a Tk core text, spinbox, checkbutton, or
    menubutton widget, or a tile entry, spinbox, combobox, checkbutton, or
    menubutton, or one of the 19 currently supported widgets from the packages
    <a href="tablelistBWidget.html">BWidget</a>, <a href=
    "tablelistIwidgets.html">Iwidgets</a>, <a href=
    "tablelistCombobox.html">combobox</a> (by Bryan Oakley), <a href=
    "tablelistCtext.html">ctext</a>, and <a href="tablelistMentry.html">Mentry
    (or Mentry_tile)</a>.&nbsp; Before specifying a widget from one of these
    library packages as the value of the <code><b>-editwindow</b></code> column
    or cell configuration option, you must register it for interactive cell
    editing by invoking the corresponding <code><b>tablelist::add*</b></code>
    command.&nbsp; The above-mentioned Tk core and tile widgets are
    automatically registered for cell editing.</dd>

    <dd class="tm">In the simplest case, the text automatically inserted into
    the temporary embedded widget is the same as the text displayed in the
    cell, which in turn can be the cell's contents or the string obtained from
    the latter by using the <code><b><a href=
    "#col_formatcommand">-formatcommand</a></b></code> option of the cell's
    column.&nbsp; However, if the value of the <code><b><a href=
    "#editstartcommand">-editstartcommand</a></b></code> configuration option
    is a nonempty string, then the text displayed in the cell is passed to that
    command as its last argument (following the tablelist's path name as well
    as the cell's row and column indices), the resulting script is evaluated in
    the global scope, and the return value becomes the edit window's
    contents.&nbsp; From within this script you can invoke the
    <code><b><a href="#cancelediting">cancelediting</a></b></code> subcommand,
    which destroys the temporary embedded widget and cancels the editing of its
    contents.&nbsp; The main goal of this script is, however, to enable you to
    define validations for the editing process.&nbsp; This can be done either
    with the aid of the options for entry validation, supported by Tk versions
    8.3 and higher (see the <b>entry</b> reference page), or by using the
    widget callback package <a href="http://www.nemethi.de">Wcb</a>, available
    for Tk versions 8.0 and higher.&nbsp; The Iwidgets package (available for
    Tk versions 8.0 or higher) provides its own validation facilities, which
    can equally be used if the edit window is a widget belonging to that
    extension.&nbsp; In either case, you will need the path name of the
    temporary embedded widget or that of its entry or entry-like component; use
    the <code><b><a href="#editwinpath">editwinpath</a></b></code> and
    <code><b><a href="#entrypath">entrypath</a></b></code> subcommands to get
    these path names.&nbsp; Another purpose of the command indicated by the
    <code><b>-editstartcommand</b></code> option is to enable you to prepare
    the edit window in various other ways.&nbsp; For example, if the latter is
    a combobox widget then you can set its <code><b>-editable</b></code> option
    to false or (for a tile combobox) set its state to
    <code><b>readonly</b></code>, and you will have to populate its listbox
    component.&nbsp; In the same script, you can change some of the embedded
    widget's visual attributes (like its background, selection background, or
    selection foreground color).&nbsp; (Notice that this can also be done with
    the aid of the Tk option database.)</dd>

    <dd class="tm">The editing of the text inserted into the edit window uses
    the widget-specific bindings for mouse and keyboard events, with a few
    extensions and changes, as described in the <a href=
    "#edit_bindings">DEFAULT BINDINGS FOR INTERACTIVE CELL EDITING</a>
    section.&nbsp; For example, in entry or entry-like components of the edit
    window, <code>Control-i</code> inserts a tab, <code>Control-j</code>
    inserts a newline, and if the edit window is a text or ctext widget then
    <code>Return</code> and <code>KP_Enter</code> insert a newline character,
    too.&nbsp; <code>Tab</code> and <code>Shift-Tab</code> are used for
    navigation between the editable cells, just like <code>Alt-Left</code>,
    <code>Alt-Right</code>, <code>Alt-Up</code>, <code>Alt-Down</code>,
    <code>Alt-Prior</code>, <code>Alt-Next</code>, <code>Alt-Home</code>, and
    <code>Alt-End</code> (as well as <code>Control-Home</code> and
    <code>Control-End</code>, except in the case of a text or ctext
    widget).&nbsp; On Mac OS Classic and Mac OS X Aqua the <code>Command</code>
    key is used instead of <code>Alt</code>.&nbsp; The editing can be aborted
    with the <code>Escape</code> key (or by invoking the <code><b><a href=
    "#cancelediting">cancelediting</a></b></code> subcommand) and terminated
    normally with <code>Return</code> or <code>KP_Enter</code> (together with
    <code>Control</code> for a text or ctext widget).&nbsp; The bindings for
    the keys used for normal termination of the editing just invoke the
    <code><b><a href="#finishediting">finishediting</a></b></code> subcommand;
    the latter can also be called explicitly to terminate the editing
    programmatically.&nbsp; Normal termination is also triggered by clicking
    with the left mouse button anywhere in the tablelist's body, outside the
    cell just being edited, or moving into another editable cell by using
    keyboard navigation.&nbsp; If the editing was started with the left mouse
    button, the edit window is a Tk or tile checkbutton, and the value of the
    <code><b><a href="#instanttoggle">-instanttoggle</a></b></code> option is
    true, then the normal termination of the editing will take place
    automatically, without any user interaction.</dd>

    <dd class="tm">When normal termination of the editing process occurs, the
    Tcl command associated with the tablelist widget compares the edit window's
    final contents to its original one.&nbsp; If they are equal then the
    embedded widget is destroyed and the cell's original value is
    restored.&nbsp; If the two strings are different and the value of the
    <code><b><a href="#editendcommand">-editendcommand</a></b></code>
    configuration option is a nonempty string, then the edit window's final
    text is passed to that command as its last argument (following the
    tablelist's path name as well as the cell's row and column indices), the
    resulting script is evaluated in the global scope, and the return value
    becomes the cell's new internal contents after destroying the temporary
    embedded widget.&nbsp; The main goal of this script is to enable you to do
    a final validation of the edit window's contents.&nbsp; From within this
    script you can invoke the <code><b><a href=
    "#rejectinput">rejectinput</a></b></code> subcommand, which prevents the
    script's return value from becoming the cell's new contents; this
    subcommand also prevents the destruction of the temporary embedded
    widget.&nbsp; Another purpose of the command indicated by the
    <code><b>-editendcommand</b></code> option is to convert the edit window's
    text to the cell's new <i>internal</i> contents, which is necessary if, due
    to the <code><b><a href="#col_formatcommand">-formatcommand</a></b></code>
    column configuration option, the cell's internal value is different from
    its external representation.&nbsp; See the description of the
    <code><b><a href="#forceeditendcommand">-forceeditendcommand</a></b></code>
    option for more about the invocation of the command mentioned above.</dd>

    <dt class="tm" id="virtual_events"><b>VIRTUAL EVENTS</b></dt>

    <dd>Tablelist defines a few virtual events for the purposes of
    notification, and makes use of the&nbsp; <code><b>event
    generate</b></code>&nbsp; command to send them to the tablelist widget in
    question (whose path name will be the value of the <code><b>%W</b></code>
    substitution in event scripts).&nbsp; When using Tk 8.5 or above, most of
    these virtual events are generated with their <code><b>-data</b></code>
    option set to an appropriate event-specific value.&nbsp; Binding scripts
    can access this user data as the value of the <code><b>%d</b></code>
    substitution.&nbsp; Unfortunately, the <code><b>-data</b></code> option
    to&nbsp; <code><b>event generate</b></code>&nbsp; was not supported by Tk
    versions earlier than 8.5.&nbsp; For these Tk versions, the&nbsp;
    <code><b>event generate</b></code>&nbsp; command will be invoked without
    the <code><b>-data</b></code> option.</dd>

    <dd class="tm">The virtual events generated by Tablelist are as
    follows:</dd>

    <dd class="tm">
      <table border="2" cellspacing="0" cellpadding="3">
        <tr bgcolor="#FFFFE0">
          <th align="left">Virtual Event</th>

          <th align="left">Description</th>

          <th align="left">User Data (for Tk 8.5 or Later)</th>
        </tr>

        <tr valign="top">
          <td><code><b>&lt;&lt;TablelistCellRestored&gt;&gt;</b></code></td>

          <td>Generated by the <code><b><a href=
          "#cancelediting">cancelediting</a></b></code> subcommand.</td>

          <td>A list consisting of the numerical row and column indices of the
          cell whose content is being edited.</td>
        </tr>

        <tr valign="top">
          <td><code><b>&lt;&lt;TablelistCellUpdated&gt;&gt;</b></code></td>

          <td>Generated by the <code><b><a href=
          "#finishediting">finishediting</a></b></code> subcommand.</td>

          <td>A list consisting of the numerical row and column indices of the
          cell whose content is being edited.</td>
        </tr>

        <tr valign="top">
          <td>
          <code><b>&lt;&lt;TablelistColHiddenStateChanged&gt;&gt;</b></code></td>

          <td>Generated whenever the hidden state of one or more columns is
          toggled by using the <code><b><a href=
          "#columnconfigure">columnconfigure</a></b></code>, <code><b><a href=
          "#configcolumnlist">configcolumnlist</a></b></code>,
          <code><b><a href="#configcolumns">configcolumns</a></b></code>, or
          <code><b><a href="#togglecolumnhide">togglecolumnhide</a></b></code>
          subcommand.</td>

          <td>A list consisting of the numerical indices of the columns whose
          hidden state changed.</td>
        </tr>

        <tr valign="top">
          <td><code><b>&lt;&lt;TablelistColumnMoved&gt;&gt;</b></code></td>

          <td>Generated by the default bindings whenever a column is moved
          interactively to a new position.</td>

          <td>A list of length 4, whose first two elements are identical to the
          two arguments passed to the <code><b><a href=
          "#movecolumn">movecolumn</a></b></code> subcommand invoked for moving
          the source column to the target position, and the last two elements
          are the corresponding column names, retrieved with the aid of
          the&nbsp; <code><b><a href="#columncget">columncget</a> ...
          -name</b></code>&nbsp; subcommand.</td>
        </tr>

        <tr valign="top">
          <td><code><b>&lt;&lt;TablelistColumnResized&gt;&gt;</b></code></td>

          <td>Generated by the default bindings whenever a column is resized
          interactively.</td>

          <td>The numerical index of the column that was resized.</td>
        </tr>

        <tr valign="top">
          <td><code><b>&lt;&lt;TablelistColumnSorted&gt;&gt;</b></code></td>

          <td>Generated by the <code><b><a href=
          "tablelistColSort.html#sortByColumn">tablelist::sortByColumn</a></b></code>
          command.</td>

          <td>A list consisting of the numerical column index and the sort
          order (<code><b>decreasing</b></code> or
          <code><b>increasing</b></code>).</td>
        </tr>

        <tr valign="top">
          <td><code><b>&lt;&lt;TablelistColumnsSorted&gt;&gt;</b></code></td>

          <td>Generated by the <code><b><a href=
          "tablelistColSort.html#addToSortColumns">tablelist::addToSortColumns</a></b></code>
          command.</td>

          <td>A list consisting of the two lists passed to the
          <code><b><a href="tablelistWidget.html#sortbycolumnlist">sortbycolumnlist</a></b></code>
          subcommand, invoked to perform the multi-column sorting.</td>
        </tr>

        <tr valign="top">
          <td>
          <code><b>&lt;&lt;TablelistRowHiddenStateChanged&gt;&gt;</b></code></td>

          <td>Generated whenever the hidden state of one or more rows is
          toggled by using the <code><b><a href=
          "#rowconfigure">rowconfigure</a></b></code>, <code><b><a href=
          "#configrowlist">configrowlist</a></b></code>, <code><b><a href=
          "#configrows">configrows</a></b></code>, or <code><b><a href=
          "#togglerowhide">togglerowhide</a></b></code> subcommand.</td>

          <td>A list consisting of the numerical indices of the rows whose
          hidden state changed.</td>
        </tr>

        <tr valign="top">
          <td><code><b>&lt;&lt;TablelistRowMoved&gt;&gt;</b></code></td>

          <td>Generated by the default bindings whenever a row is moved
          interactively to a new position.</td>

          <td>A list of length 3, whose elements are derived from the arguments
          passed to the second form of the <code><b><a href=
          "#move">move</a></b></code> subcommand invoked for moving the source
          row to the target position.&nbsp; The first list element will be the
          full key corresponding to the first argument, the second one will be
          <code><b>root</b></code> or the full key corresponding to the second
          argument, and the third list element will be identical to the third
          argument passed to the <code><b>move</b></code> subcommand.</td>
        </tr>

        <tr valign="top">
          <td><code><b>&lt;&lt;TablelistSelect&gt;&gt;</b></code>,
          <code><b>&lt;&lt;ListboxSelect&gt;&gt;</b></code></td>

          <td>Generated by the default bindings whenever the selection changes
          in the tablelist widget due to user interaction.</td>

          <td>Not used.</td>
        </tr>

        <tr valign="top">
          <td><code><b>&lt;&lt;TablelistSelectionLost&gt;&gt;</b></code></td>

          <td>Sent to the tablelist widget whenever it loses ownership of the
          PRIMARY selection.</td>

          <td>Not used.</td>
        </tr>
      </table>
    </dd>

    <dt class="tm" id="row_indices"><b>ROW INDICES</b></dt>

    <dd>Many of the widget commands for tablelist widgets take one or more row
    indices as arguments.&nbsp; A row index specifies a particular item of the
    tablelist, in any of the following ways:</dd>

    <dd class="tm">
      <table border="0" cellpadding="6" cellspacing="0">
        <tr valign="top">
          <td><code><i>number</i></code></td>

          <td>Specifies the item as a numerical index, where <code>0</code>
          corresponds to the first item in the tablelist.</td>
        </tr>

        <tr valign="top">
          <td><code><b>k</b><i>number</i></code></td>

          <td>Specifies the item by its full key, composed of the letter
          <code><b>k</b></code> and the sequence number associated with the
          item.&nbsp; You can use the <code><b><a href=
          "#getkeys">getkeys</a></b></code> widget command to get this sequence
          number, or the <code><b><a href=
          "#getfullkeys">getfullkeys</a></b></code> widget command to retrieve
          the full key.&nbsp; In addition, the <code><b><a href=
          "#insert">insert</a></b></code>, <code><b><a href=
          "#insertlist">insertlist</a></b></code>, <code><b><a href=
          "#insertchildren">insertchildren</a></b></code>, and
          <code><b><a href="#insertchildlist">insertchildlist</a></b></code>
          subcommands return the list of full keys associated with the items
          just inserted.</td>
        </tr>

        <tr valign="top">
          <td><code><b>active</b>&nbsp;&nbsp;&nbsp;</code></td>

          <td>Indicates the item containing the element that has the location
          cursor.&nbsp; Depending on the selection type, this item as a whole
          or just its element having the location cursor will be displayed
          according to the value of the <code><b><a href=
          "#activestyle">-activestyle</a></b></code> configuration option when
          the tablelist has the keyboard focus.&nbsp; This item is specified
          with the <code><b><a href="#activate">activate</a></b></code> widget
          command or as the row containing the element specified with the
          <code><b><a href="#activatecell">activatecell</a></b></code> widget
          command.</td>
        </tr>

        <tr valign="top">
          <td><code><b>anchor</b></code></td>

          <td>Indicates the anchor point for the row selection, which is set
          with the&nbsp; <code><b><a href="#selection">selection
          anchor</a></b></code>&nbsp; widget command, or the row containing the
          anchor point for the cell selection, which is set with the&nbsp;
          <code><b><a href="#cellselection">cellselection
          anchor</a></b></code>&nbsp; widget command.</td>
        </tr>

        <tr valign="top">
          <td><code><b>end</b></code></td>

          <td>Indicates the end of the tablelist.&nbsp; For most commands this
          refers to the last item in the tablelist, but for a few commands such
          as <code><b><a href="#index">index</a></b></code>, <code><b><a href=
          "#insert">insert</a></b></code>, and <code><b><a href=
          "#insertlist">insertlist</a></b></code>, as well as for the target of
          the <code><b><a href="#move">move</a></b></code> command it refers to
          the item just after the last one.</td>
        </tr>

        <tr valign="top">
          <td><code><b>top</b></code></td>

          <td>Indicates the topmost item visible in the tablelist window.</td>
        </tr>

        <tr valign="top">
          <td><code><b>bottom</b></code></td>

          <td>Indicates the bottommost item visible in the tablelist
          window.</td>
        </tr>

        <tr valign="top">
          <td><code><b>@</b><i>x</i><b>,</b><i>y</i></code></td>

          <td>Indicates the item that covers the point in the tablelist window
          specified by <code><i>x</i></code> and <code><i>y</i></code> (in
          pixel coordinates).&nbsp; If no item covers that point, then the
          closest item to that point is used.&nbsp; The coordinates
          <code><i>x</i></code> and <code><i>y</i></code> are expected to be
          relative to the tablelist window itself (not its body
          component).</td>
        </tr>

        <tr valign="top">
          <td><code><i>name</i></code></td>

          <td>Specifies the row by the value of its <code><b><a href=
          "#row_name">-name</a></b></code> configuration option.&nbsp;
          <code><i>name</i></code> must be different from all the above row
          indices, and should be unique (if several rows have the same name
          then this value is considered to indicate the first matching
          row).</td>
        </tr>
      </table>
    </dd>

    <dd class="tm">In the widget command descriptions below, arguments named
    <code><i>index</i></code>, <code><i>first</i></code>,
    <code><i>last</i></code>, <code><i>sourceIndex</i></code>, and
    <code><i>targetIndex</i></code> always contain row indices in one of the
    above forms.</dd>

    <dt class="tm" id="node_indices"><b>NODE INDICES</b></dt>

    <dd>Many of the widget commands for tablelist widgets take a node index as
    argument.&nbsp; A node index is either the word <code><b>root</b></code>,
    denoting the invisible root node of a tablelist used as a tree widget, or a
    regular row index in one of the above forms, specifying a particular item
    of the tablelist.</dd>

    <dd class="tm">In the widget command descriptions below, arguments named
    <code><i>nodeIndex</i></code>, <code><i>parentNodeIndex</i></code>, and
    <code><i>targetParentNodeIndex</i></code> always contain node indices.</dd>

    <dt class="tm" id="col_indices"><b>COLUMN INDICES</b></dt>

    <dd>Many of the widget commands for tablelist widgets take one or more
    column indices as arguments.&nbsp; A column index specifies a particular
    column of the tablelist, in any of the following ways:</dd>

    <dd class="tm">
      <table border="0" cellpadding="6" cellspacing="0">
        <tr valign="top">
          <td><code><i>number</i></code></td>

          <td>Specifies the column as a numerical index, where <code>0</code>
          corresponds to the first column in the tablelist.</td>
        </tr>

        <tr valign="top">
          <td><code><b>active</b>&nbsp;&nbsp;&nbsp;</code></td>

          <td>Indicates the column containing the element that has the location
          cursor.&nbsp; If the selection type is <code><b>cell</b></code> then
          this element will be displayed according to the value of the
          <code><b><a href="#activestyle">-activestyle</a></b></code>
          configuration option when the tablelist has the keyboard focus.&nbsp;
          This element is specified with the <code><b><a href=
          "#activatecell">activatecell</a></b></code> widget command.</td>
        </tr>

        <tr valign="top">
          <td><code><b>anchor</b></code></td>

          <td>Indicates the column containing the anchor point for the cell
          selection, which is set with the&nbsp; <code><b><a href=
          "#cellselection">cellselection anchor</a></b></code>&nbsp; widget
          command.</td>
        </tr>

        <tr valign="top">
          <td><code><b>end</b></code></td>

          <td>Indicates the last column of the tablelist, except for the
          commands <code><b><a href=
          "#insertcolumns">insertcolumns</a></b></code> and <code><b><a href=
          "#insertcolumnlist">insertcolumnlist</a></b></code>, as well as for
          the target of the <code><b><a href=
          "#movecolumn">movecolumn</a></b></code> command, in which cases it
          refers to the column just after the last one.</td>
        </tr>

        <tr valign="top">
          <td><code><b>left</b></code></td>

          <td>Indicates the leftmost column visible in the tablelist
          window.</td>
        </tr>

        <tr valign="top">
          <td><code><b>right</b></code></td>

          <td>Indicates the rightmost column visible in the tablelist
          window.</td>
        </tr>

        <tr valign="top">
          <td><code><b>@</b><i>x</i><b>,</b><i>y</i></code></td>

          <td>Indicates the column that covers the point in the tablelist
          window specified by <code><i>x</i></code> and <code><i>y</i></code>
          (in pixel coordinates).&nbsp; If no column covers that point, then
          the closest column to that point is used.&nbsp; The coordinates
          <code><i>x</i></code> and <code><i>y</i></code> are expected to be
          relative to the tablelist window itself (not its body
          component).</td>
        </tr>

        <tr valign="top">
          <td><code><i>name</i></code></td>

          <td>Specifies the column by the value of its <code><b><a href=
          "#col_name">-name</a></b></code> configuration option.&nbsp;
          <code><i>name</i></code> must be different from all the above column
          indices, and should be unique (if several columns have the same name
          then this value is considered to indicate the first matching
          column).</td>
        </tr>
      </table>
    </dd>

    <dd class="tm">In the widget command descriptions below, arguments named
    <code><i>columnIndex</i></code>, <code><i>firstColumn</i></code>,
    <code><i>lastColumn</i></code>, <code><i>sourceColumn</i></code>, and
    <code><i>targetColumn</i></code> always contain column indices in one of
    the above forms.</dd>

    <dt class="tm" id="cell_indices"><b>CELL INDICES</b></dt>

    <dd>Many of the widget commands for tablelist widgets take one or more cell
    indices as arguments.&nbsp; A cell index specifies a particular cell of the
    tablelist, in any of the following ways:</dd>

    <dd class="tm">
      <table border="0" cellpadding="6" cellspacing="0">
        <tr valign="top">
          <td><code><i>row</i><b>,</b><i>col</i></code></td>

          <td>Indicates the cell having the row index <code><i>row</i></code>
          and column index <code><i>col</i></code>.&nbsp;
          <code><i>row</i></code> may be a number, a full key (of the form
          <code><b>k</b><i>number</i></code>), <code><b>active</b></code>,
          <code><b>anchor</b></code>, <code><b>end</b></code> (where the latter
          indicates the last row in the tablelist), <code><b>top</b></code>,
          <code><b>bottom</b></code>, or a row name.&nbsp;
          <code><i>col</i></code> may be a number, <code><b>active</b></code>,
          <code><b>anchor</b></code>, <code><b>end</b></code>,
          <code><b>left</b></code>, <code><b>right</b></code>, or a column
          name.</td>
        </tr>

        <tr valign="top">
          <td><code><b>active</b>&nbsp;&nbsp;&nbsp;</code></td>

          <td>Indicates the element that has the location cursor.&nbsp; If the
          selection type is <code><b>cell</b></code> then this element will be
          displayed according to the value of the <code><b><a href=
          "#activestyle">-activestyle</a></b></code> configuration option when
          the tablelist has the keyboard focus.&nbsp; This element is specified
          with the <code><b><a href="#activatecell">activatecell</a></b></code>
          widget command.</td>
        </tr>

        <tr valign="top">
          <td><code><b>anchor</b></code></td>

          <td>Indicates the anchor point for the cell selection, which is set
          with the&nbsp; <code><b><a href="#cellselection">cellselection
          anchor</a></b></code>&nbsp; widget command.</td>
        </tr>

        <tr valign="top">
          <td><code><b>end</b></code></td>

          <td>Indicates the last cell in the last row of the tablelist.</td>
        </tr>

        <tr valign="top">
          <td><code><b>@</b><i>x</i><b>,</b><i>y</i></code></td>

          <td>Indicates the cell that covers the point in the tablelist window
          specified by <code><i>x</i></code> and <code><i>y</i></code> (in
          pixel coordinates).&nbsp; If no cell covers that point, then the
          closest cell to that point is used.&nbsp; The coordinates
          <code><i>x</i></code> and <code><i>y</i></code> are expected to be
          relative to the tablelist window itself (not its body
          component).</td>
        </tr>
      </table>
    </dd>

    <dd class="tm">In the widget command descriptions below, arguments named
    <code><i>cellIndex</i></code>, <code><i>firstCell</i></code>, and
    <code><i>lastCell</i></code> always contain cell indices in one of the
    above forms.</dd>

    <dt class="tm" id="widget_command"><b>WIDGET COMMAND</b></dt>

    <dd>
      The <code><b>tablelist::tablelist</b></code> command creates a new Tcl
      command whose name is <code><i>pathName</i></code>.&nbsp; This command
      may be used to invoke various operations on the widget.&nbsp; It has the
      following general form:

      <blockquote>
        <pre>
<i>pathName</i> <i>option</i> ?<i>arg</i> <i>arg</i> ...?
</pre>
      </blockquote>
    </dd>

    <dd><code><i>option</i></code> and the <code><i>arg</i></code>s determine
    the exact behavior of the command.&nbsp; The following commands are
    possible for tablelist widgets:</dd>

    <dd>
      <dl>
        <dt class="tm" id="activate"><code><i>pathName</i> <b>activate</b>
        <i>index</i></code></dt>

        <dd>Sets the active item to the one indicated by
        <code><i>index</i></code> if the tablelist's <code><b><a href=
        "#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; If <code><i>index</i></code> is
        outside the range of items in the tablelist or it refers to a
        non-<a href="#isviewable">viewable</a> item then the closest viewable
        item is activated.&nbsp; The active item is drawn as specified by the
        <code><b><a href="#activestyle">-activestyle</a></b></code>
        configuration option when the widget has the input focus and the
        selection type is <code><b>row</b></code>.&nbsp; Its index may be
        retrieved with the index <code><b>active</b></code>.&nbsp; Returns an
        empty string.</dd>

        <dt class="tm" id="activatecell"><code><i>pathName</i>
        <b>activatecell</b> <i>cellIndex</i></code></dt>

        <dd>Sets the active element to the one indicated by
        <code><i>cellIndex</i></code> if the tablelist's <code><b><a href=
        "#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; If <code><i>cellIndex</i></code> is
        outside the range of elements in the tablelist or it refers to a
        non-<a href="#isviewable">viewable</a> element, then the closest
        viewable element is activated.&nbsp; The active element is drawn as
        specified by the <code><b><a href=
        "#activestyle">-activestyle</a></b></code> configuration option when
        the widget has the input focus and the selection type is
        <code><b>cell</b></code>.&nbsp; Its index may be retrieved with the
        cell index <code><b>active</b></code>.&nbsp; Returns an empty
        string.</dd>

        <dt class="tm" id="applysorting"><code><i>pathName</i>
        <b>applysorting</b> <i>itemList</i></code></dt>

        <dd>Sorts the elements of <code><i>itemList</i></code> according to the
        parameters of the most recent <code><b><a href=
        "#sort">sort</a></b></code>, <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code>, or <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> invocation and
        returns a new list in sorted order.&nbsp; The
        <code><i>itemList</i></code> argument is supposed to be a well-formed
        list of lists, where the length of each sublist is expected to be no
        less than the number of columns of the tablelist widget.&nbsp; If the
        items haven't been sorted at all, or the sort information was reset by
        invoking <code><b><a href=
        "#resetsortinfo">resetsortinfo</a></b></code>, then no sorting takes
        place and the return value will be identical to
        <code><i>itemList</i></code>.</dd>

        <dd class="tm"><b>REMARK:</b>&nbsp; This subcommand is usually invoked
        from within the command specified as the value of the <code><b><a href=
        "#expandcommand">-expandcommand</a></b></code> configuration option,
        for a tablelist row whose children have not yet been inserted into the
        widget.&nbsp; The most efficient way to insert the child items in the
        correct order is to add them to a list, sort this list via
        <code><b>applysorting</b></code>, and then insert the items of the
        sorted list by invoking the <code><b><a href=
        "#insertchildlist">insertchildlist</a></b></code> subcommand.</dd>

        <dt class="tm" id="attrib"><code><i>pathName</i> <b>attrib</b>
        ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i> ...?</code></dt>

        <dd>Queries or modifies the attributes of the widget.&nbsp; If no
        <code><i>name</i></code> is specified, the command returns a list of
        pairs, each of which contains the name and the value of an attribute
        for <code><i>pathName</i></code>.&nbsp; If <code><i>name</i></code> is
        specified with no <code><i>value</i></code>, then the command returns
        the value of the one named attribute, or an empty string if no
        corresponding value exists (you can use the <code><b><a href=
        "#hasattrib">hasattrib</a></b></code> subcommand to distinguish this
        case from the one that the value of an <i>existing</i> attribute is an
        empty string).&nbsp; If one or more
        <code><i>name</i></code>-<code><i>value</i></code> pairs are specified,
        then the command sets the given widget attribute(s) to the given
        value(s); in this case the return value is an empty string.&nbsp;
        <code><i>name</i></code> may be an arbitrary string.</dd>

        <dt class="tm" id="bbox"><code><i>pathName</i> <b>bbox</b>
        <i>index</i></code></dt>

        <dd>Returns a list of four numbers describing the bounding box of the
        row given by <code><i>index</i></code>.&nbsp; The first two elements of
        the list give the x and y coordinates of the upper-left corner of the
        screen area covered by the row (specified in pixels relative to the
        widget) and the last two elements give the width and height of the
        area, in pixels.&nbsp; If no part of the row given by
        <code><i>index</i></code> is visible on the screen, or if
        <code><i>index</i></code> refers to a non-existent row, then the result
        is an empty string; if the row is partially visible, the result gives
        the full area of the row, including any parts that are not
        visible.</dd>

        <dt class="tm" id="bodypath"><code><i>pathName</i>
        <b>bodypath</b></code></dt>

        <dd>Returns the path name of the body component of the widget.</dd>

        <dt class="tm" id="bodytag"><code><i>pathName</i>
        <b>bodytag</b></code></dt>

        <dd>Returns the name of a binding tag whose name depends on the path
        name of the tablelist widget and which is associated with the
        tablelist's body, the separators, as well as the message and label
        widgets used for displaying multi-line elements and images,
        respectively.&nbsp; This binding tag precedes the tag <code><b><a href=
        "#body_bindings">TablelistBody</a></b></code> in the list of binding
        tags of the tablelist descendants mentioned above, and is designed to
        be used when defining individual binding scripts for tablelist
        widgets.&nbsp; The main advantage of using this tag instead of the path
        name of the tablelist's body is that it enables you to write event
        handling scripts that are valid not only for the tablelist's body but
        also for the separators, multi-line cells, and embedded images.</dd>

        <dt class="tm" id="canceledediting"><code><i>pathName</i>
        <b>canceledediting</b></code></dt>

        <dd>Returns the value <code>1</code> if the most recent interactive
        cell editing was canceled (by the user or programmatically, with the
        aid of the <code><b><a href=
        "#cancelediting">cancelediting</a></b></code> subcommand) and
        <code>0</code> otherwise.</dd>

        <dd class="tm"><b>REMARK:</b>&nbsp; By invoking this subcommand from
        within the Tcl command specified by the <code><b><a href=
        "#editendcommand">-editendcommand</a></b></code> configuration option,
        you can find out whether the editing session was canceled or terminated
        normally.&nbsp; Remember that this Tcl command will be invoked in both
        cases mentioned above if the <code><b><a href=
        "#forceeditendcommand">-forceeditendcommand</a></b></code> option was
        set to true.</dd>

        <dt class="tm" id="cancelediting"><code><i>pathName</i>
        <b>cancelediting</b></code></dt>

        <dd>This subcommand cancels the interactive editing of the contents of
        the cell whose index was passed to the <code><b><a href=
        "#editcell">editcell</a></b></code> subcommand, destroys the temporary
        widget embedded into the cell, and restores the original cell
        contents.&nbsp; This command enables you to cancel the interactive cell
        editing from within the Tcl command specified by the <code><b><a href=
        "#editstartcommand">-editstartcommand</a></b></code> configuration
        option if that pre-edit callback encounters an error when preparing the
        text to be inserted into the edit window.&nbsp; The command is also
        invoked implicitly by pressing the <code>Escape</code> key when a cell
        is being edited.&nbsp; The return value is an empty string.&nbsp;
        Immediately before returning this value, the command generates the
        virtual event
        <code><b>&lt;&lt;TablelistCellRestored&gt;&gt;</b></code>.&nbsp; For Tk
        versions 8.5 or higher, this virtual event is generated with its
        <code><b>-data</b></code> option set to a list consisting of the
        numerical row and column indices of the cell whose content is being
        edited.&nbsp; If no cell was being edited when the command was invoked
        then an empty string is returned without generating a virtual
        event.</dd>

        <dt class="tm" id="cellattrib"><code><i>pathName</i> <b>cellattrib</b>
        <i>cellIndex</i> ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i>
        ...?</code></dt>

        <dd>Queries or modifies the attributes of the cell given by
        <code><i>cellIndex</i></code>.&nbsp; If no <code><i>name</i></code> is
        specified, the command returns a list of pairs, each of which contains
        the name and the value of an attribute for the cell.&nbsp; If
        <code><i>name</i></code> is specified with no
        <code><i>value</i></code>, then the command returns the value of the
        one named cell attribute, or an empty string if no corresponding value
        exists (you can use the <code><b><a href=
        "#hascellattrib">hascellattrib</a></b></code> subcommand to distinguish
        this case from the one that the value of an <i>existing</i> cell
        attribute is an empty string).&nbsp; If one or more
        <code><i>name</i></code>-<code><i>value</i></code> pairs are specified,
        then the command sets the given cell attribute(s) to the given
        value(s); in this case the return value is an empty string.&nbsp;
        <code><i>name</i></code> may be an arbitrary string.</dd>

        <dt class="tm" id="cellbbox"><code><i>pathName</i> <b>cellbbox</b>
        <i>cellIndex</i></code></dt>

        <dd>Returns a list of four numbers describing the bounding box of the
        cell given by <code><i>cellIndex</i></code>.&nbsp; The first two
        elements of the list give the x and y coordinates of the upper-left
        corner of the screen area covered by the cell (specified in pixels
        relative to the widget) and the last two elements give the width and
        height of the area, in pixels.&nbsp; If no part of the cell given by
        <code><i>cellIndex</i></code> is visible on the screen, or if
        <code><i>cellIndex</i></code> refers to a non-existent cell, then the
        result is an empty string; if the cell is partially visible, the result
        gives the full area of the cell, including any parts that are not
        visible.</dd>

        <dt class="tm" id="cellcget"><code><i>pathName</i> <b>cellcget</b>
        <i>cellIndex</i> <i>option</i></code></dt>

        <dd>Returns the current value of the cell configuration option given by
        <code><i>option</i></code> for the cell specified by
        <code><i>cellIndex</i></code>.&nbsp; <code><i>option</i></code> may
        have any of the values accepted by the <code><b><a href=
        "#cellconfigure">cellconfigure</a></b></code> command.</dd>

        <dt class="tm" id="cellconfigure"><code><i>pathName</i>
        <b>cellconfigure</b> <i>cellIndex</i> ?<i>option</i>? <i>value</i>
        <i>option</i> <i>value</i> ...?</code></dt>

        <dd>Queries or modifies the configuration options of the cell given by
        <code><i>cellIndex</i></code>.&nbsp; If no <code><i>option</i></code>
        is specified, the command returns a list describing all of the
        available options for the cell (see
        <code><b>Tk_ConfigureInfo</b></code> for information on the format of
        this list).&nbsp; If <code><i>option</i></code> is specified with no
        <code><i>value</i></code>, then the command returns a list describing
        the one named option (this list will be identical to the corresponding
        sublist of the value returned if no <code><i>option</i></code> is
        specified).&nbsp; If one or more
        <code><i>option</i></code>-<code><i>value</i></code> pairs are
        specified, then the command modifies the given cell option(s) to have
        the given value(s); in this case the return value is an empty
        string.&nbsp; <code><i>option</i></code> may have any of the values
        described in the <a href="#cell_options">CELL CONFIGURATION OPTIONS</a>
        section.</dd>

        <dt class="tm" id="cellindex"><code><i>pathName</i> <b>cellindex</b>
        <i>cellIndex</i></code></dt>

        <dd>Returns the canonical cell index value that corresponds to
        <code><i>cellIndex</i></code>, in the form
        <code><i>row</i><b>,</b><i>col</i></code>, where
        <code><i>row</i></code> and <code><i>col</i></code> are integers.</dd>

        <dt class="tm" id="cellselection"><code><i>pathName</i>
        <b>cellselection</b> <i>option</i> <i>args</i></code></dt>

        <dd>This command is used to adjust the cell selection within a
        tablelist widget.&nbsp; It has several forms, depending on
        <code><i>option</i></code>:</dd>

        <dd>
          <dl>
            <dt class="tm"><code><i>pathName</i> <b>cellselection</b>
            <b>anchor</b> <i>cellIndex</i></code></dt>

            <dd>Sets the cell selection anchor to the element given by
            <code><i>cellIndex</i></code>.&nbsp; If
            <code><i>cellIndex</i></code> refers to a nonexistent or
            non-<a href="#isviewable">viewable</a> element, then the closest
            viewable element is used.&nbsp; The cell selection anchor is the
            end of the cell selection that is fixed while dragging out a cell
            selection with the mouse if the selection type is
            <code><b>cell</b></code>.&nbsp; The cell index
            <code><b>anchor</b></code> may be used to refer to the anchor
            element.</dd>

            <dt class="tm"><code><i>pathName</i> <b>cellselection</b>
            <b>clear</b> <i>firstCell</i> <i>lastCell</i></code><br>
            <code><i>pathName</i> <b>cellselection</b> <b>clear</b>
            <i>cellIndexList</i></code></dt>

            <dd>If any of the elements between <code><i>firstCell</i></code>
            and <code><i>lastCell</i></code> (inclusive) or corresponding to
            the cell indices specified by the list
            <code><i>cellIndexList</i></code> are selected, they are
            deselected.&nbsp; The selection state is not changed for elements
            outside the range given in the first form of the command or
            different from those specified by the cell index list given in its
            second form.</dd>

            <dt class="tm"><code><i>pathName</i> <b>cellselection</b>
            <b>includes</b> <i>cellIndex</i></code></dt>

            <dd>Returns <code>1</code> if the element indicated by
            <code><i>cellIndex</i></code> is currently selected, <code>0</code>
            if it isn't.</dd>

            <dt class="tm"><code><i>pathName</i> <b>cellselection</b>
            <b>set</b> <i>firstCell</i> <i>lastCell</i></code><br>
            <code><i>pathName</i> <b>cellselection</b> <b>set</b>
            <i>cellIndexList</i></code><br></dt>

            <dd class="tm">Selects all of the selectable elements in the range
            between <code><i>firstCell</i></code> and
            <code><i>lastCell</i></code>, inclusive, or corresponding to the
            indices specified by the list <code><i>cellIndexList</i></code>,
            without affecting the selection state of any other elements.&nbsp;
            An element is viewed as selectable if and only if the value of the
            <code><b><a href="#selectable">-selectable</a></b></code> option of
            the row containing it is true.</dd>
          </dl>
        </dd>

        <dd class="tm">If the tablelist's <code><b><a href=
        "#state">state</a></b></code> is <code><b>disabled</b></code> and
        <code><i>option</i></code> is different from
        <code><b>includes</b></code> then the command just returns an empty
        string, without performing any of the above actions.</dd>

        <dt class="tm" id="cget"><code><i>pathName</i> <b>cget</b>
        <i>option</i></code></dt>

        <dd>Returns the current value of the configuration option given by
        <code><i>option</i></code>, which may have any of the values accepted
        by the <code><b>tablelist::tablelist</b></code> command.</dd>

        <dt class="tm" id="childcount"><code><i>pathName</i> <b>childcount</b>
        <i>nodeIndex</i></code></dt>

        <dd>Returns the number of children of the tree node indicated by
        <code><i>nodeIndex</i></code>.&nbsp; If this argument is specified as
        <code><b>root</b></code> then the return value will be the number of
        top-level items of the tablelist widget.</dd>

        <dt class="tm" id="childindex"><code><i>pathName</i> <b>childindex</b>
        <i>index</i></code></dt>

        <dd>Returns the numerical index of the row given by
        <code><i>index</i></code> in the list of children of its parent
        node.</dd>

        <dt class="tm" id="childkeys"><code><i>pathName</i> <b>childkeys</b>
        <i>nodeIndex</i></code></dt>

        <dd>Returns the list of full keys of the children of the tree node
        indicated by <code><i>nodeIndex</i></code>.&nbsp; If this argument is
        specified as <code><b>root</b></code> then the return value will be the
        list of full keys of the top-level items contained in the tablelist
        widget.</dd>

        <dt class="tm" id="collapse"><code><i>pathName</i> <b>collapse</b>
        <i>index</i> ?<b>-fully</b>|<b>-partly</b>?</code></dt>

        <dd>This subcommand collapses the specified row of a tablelist used as
        a tree widget, i.e., elides all its descendants.&nbsp; The optional
        argument <code><b>-fully</b></code> (which is the default) indicates
        that the command will be performed recursively, i.e., all of the
        descendants of the node specified by <code><i>index</i></code> will be
        collapsed, so that a subsequent invocation of the non-recursive version
        of the <code><b><a href="#expand">expand(all)</a></b></code> subcommand
        will only display the row's children but no further descendants of
        it.&nbsp; The <code><b>-partly</b></code> option (which is used by the
        default bindings) restricts the operation to just one hierarchy level,
        implying that by a subsequent invocation of the non-recursive version
        of the <code><b>expand(all)</b></code> subcommand exactly the same
        descendants will be displayed again that were visible prior to
        collapsing the row.</dd>

        <dd class="tm">Before hiding the descendants of a row, the command
        specified as the value of the <code><b><a href=
        "#collapsecommand">-collapsecommand</a></b></code> option (if any) is
        automatically concatenated with the name of the tablelist widget and
        the row index, and the resulting script is evaluated in the global
        scope.</dd>

        <dd class="tm">For technical reasons (the use of the
        <code><b>-elide</b></code> text widget tag option for collapsing a
        row), this subcommand is not supported for Tk versions earlier than
        8.3.</dd>

        <dt class="tm" id="collapseall"><code><i>pathName</i>
        <b>collapseall</b> ?<b>-fully</b>|<b>-partly</b>?</code></dt>

        <dd>This subcommand collapses all top-level rows of a tablelist used as
        a tree widget, i.e., elides all their descendants.&nbsp; The optional
        argument <code><b>-fully</b></code> (which is the default) indicates
        that the command will be performed recursively, i.e., all of the
        descendants of the top-level nodes will be collapsed, so that a
        subsequent invocation of the non-recursive version of the
        <code><b><a href="#expandall">expandall</a></b></code> subcommand will
        only display ther children but no further descendants of them.&nbsp;
        The <code><b>-partly</b></code> option restricts the operation to just
        one hierarchy level, implying that by a subsequent invocation of the
        non-recursive version of the <code><b>expandall</b></code> subcommand
        exactly the same items will be displayed again that were visible prior
        to collapsing the top-level ones.</dd>

        <dd class="tm">Before hiding the descendants of a row, the command
        specified as the value of the <code><b><a href=
        "#collapsecommand">-collapsecommand</a></b></code> option (if any) is
        automatically concatenated with the name of the tablelist widget and
        the row index, and the resulting script is evaluated in the global
        scope.</dd>

        <dd class="tm">For technical reasons (the use of the
        <code><b>-elide</b></code> text widget tag option for collapsing a
        row), this subcommand is not supported for Tk versions earlier than
        8.3.</dd>

        <dt class="tm" id="columnattrib"><code><i>pathName</i>
        <b>columnattrib</b> <i>columnIndex</i> ?<i>name</i>? ?<i>value</i>
        <i>name</i> <i>value</i> ...?</code></dt>

        <dd>Queries or modifies the attributes of the column given by
        <code><i>columnIndex</i></code>.&nbsp; If no <code><i>name</i></code>
        is specified, the command returns a list of pairs, each of which
        contains the name and the value of an attribute for the column.&nbsp;
        If <code><i>name</i></code> is specified with no
        <code><i>value</i></code>, then the command returns the value of the
        one named column attribute, or an empty string if no corresponding
        value exists (you can use the <code><b><a href=
        "#hascolumnattrib">hascolumnattrib</a></b></code> subcommand to
        distinguish this case from the one that the value of an <i>existing</i>
        column attribute is an empty string).&nbsp; If one or more
        <code><i>name</i></code>-<code><i>value</i></code> pairs are specified,
        then the command sets the given column attribute(s) to the given
        value(s); in this case the return value is an empty string.&nbsp;
        <code><i>name</i></code> may be an arbitrary string.</dd>

        <dt class="tm" id="columncget"><code><i>pathName</i> <b>columncget</b>
        <i>columnIndex</i> <i>option</i></code></dt>

        <dd>Returns the current value of the column configuration option given
        by <code><i>option</i></code> for the column specified by
        <code><i>columnIndex</i></code>.&nbsp; <code><i>option</i></code> may
        have any of the values accepted by the <code><b><a href=
        "#columnconfigure">columnconfigure</a></b></code> command.</dd>

        <dt class="tm" id="columnconfigure"><code><i>pathName</i>
        <b>columnconfigure</b> <i>columnIndex</i> ?<i>option</i>? ?<i>value</i>
        <i>option</i> <i>value</i> ...?</code></dt>

        <dd>Queries or modifies the configuration options of the column given
        by <code><i>columnIndex</i></code>.&nbsp; If no
        <code><i>option</i></code> is specified, the command returns a list
        describing all of the available options for the column (see
        <code><b>Tk_ConfigureInfo</b></code> for information on the format of
        this list).&nbsp; If <code><i>option</i></code> is specified with no
        <code><i>value</i></code>, then the command returns a list describing
        the one named option (this list will be identical to the corresponding
        sublist of the value returned if no <code><i>option</i></code> is
        specified).&nbsp; If one or more
        <code><i>option</i></code>-<code><i>value</i></code> pairs are
        specified, then the command modifies the given column option(s) to have
        the given value(s); in this case the return value is an empty
        string.&nbsp; <code><i>option</i></code> may have any of the values
        described in the <a href="#col_options">COLUMN CONFIGURATION
        OPTIONS</a> section.</dd>

        <dt class="tm" id="columncount"><code><i>pathName</i>
        <b>columncount</b></code></dt>

        <dd>Returns the number of columns in the tablelist widget.</dd>

        <dt class="tm" id="columnindex"><code><i>pathName</i>
        <b>columnindex</b> <i>columnIndex</i></code></dt>

        <dd>Returns the integer column index value that corresponds to
        <code><i>columnIndex</i></code>.</dd>

        <dt class="tm" id="columnwidth"><code><i>pathName</i>
        <b>columnwidth</b> <i>columnIndex</i>
        ?<b>-requested</b>|<b>-stretched</b>|<b>-total</b>?</code></dt>

        <dd>Returns the current width in pixels of the column specified by
        <code><i>columnIndex</i></code>.&nbsp; If the optional argument is
        <code><b>-requested</b></code> (which is the default) then the return
        value is the number of pixels corresponding to the column width
        specified by the <code><b><a href="#columns">-columns</a></b></code>
        widget or <code><b><a href="#col_width">-width</a></b></code> column
        configuration option (possibly overridden by interactive column
        resizing); if the column width was specified as <code>0</code> (and was
        not changed by interactive column resizing) then the return value is
        the actual number of pixels corresponding to the widest <a href=
        "#isviewable">viewable</a> element of the column, including its
        header.&nbsp; With the <code><b>-stretched</b></code> option, the
        command returns the column width obtained by increasing the value
        described above by the number of additional pixels that might have been
        added to the requested column width by a stretch operation (see the
        <code><b><a href="#stretch">-stretch</a></b></code> widget and
        <code><b><a href="#col_stretchable">-stretchable</a></b></code> column
        configuration options).&nbsp; Finally, if the optional argument is
        <code><b>-total</b></code> then the return value is the stretched
        column width increased by the number of pixels corresponding to the
        left and right margins within the column; this value equals the width
        of the header label if the tablelist widget is mapped.</dd>

        <dt class="tm" id="configcelllist"><code><i>pathName</i>
        <b>configcelllist</b> <i>cellConfigSpecList</i></code></dt>

        <dd>
          For each cell index, option, and value specified by the list
          <code><i>cellConfigSpecList</i></code>, the command modifies the
          given option of the given cell to have the given value.&nbsp; The
          argument <code><i>cellConfigSpecList</i></code> must be a list of the
          form

          <blockquote>
            <pre>
<i>cellIndex</i> <i>option</i> <i>value</i> <i>cellIndex</i> <i>option</i> <i>value</i> ...
</pre>
          </blockquote>
        </dd>

        <dd>where each <code><i>option</i></code> may have any of the values
        described in the <a href="#cell_options">CELL CONFIGURATION OPTIONS</a>
        section.&nbsp; The return value is an empty string.</dd>

        <dd class="tm">
          This command has the same effect as

          <blockquote>
            <pre>
eval [list <i>pathName</i> <a href=
"#configcells">configcells</a>] <i>cellConfigSpecList</i>
</pre>
          </blockquote>
        </dd>

        <dd>but it is more efficient and easier to use.</dd>

        <dt class="tm" id="configcells"><code><i>pathName</i>
        <b>configcells</b> ?<i>cellIndex</i> <i>option</i> <i>value</i>
        <i>cellIndex</i> <i>option</i> <i>value</i> ...?</code></dt>

        <dd>For each <code><i>cellIndex</i></code>, <code><i>option</i></code>,
        and <code><i>value</i></code>, the command modifies the given option of
        the given cell to have the given value.&nbsp; Each
        <code><i>option</i></code> may have any of the values described in the
        <a href="#cell_options">CELL CONFIGURATION OPTIONS</a> section.&nbsp;
        The return value is an empty string.</dd>

        <dt class="tm" id="configcolumnlist"><code><i>pathName</i>
        <b>configcolumnlist</b> <i>columnConfigSpecList</i></code></dt>

        <dd>
          For each column index, option, and value specified by the list
          <code><i>columnConfigSpecList</i></code>, the command modifies the
          given option of the given column to have the given value.&nbsp; The
          argument <code><i>columnConfigSpecList</i></code> must be a list of
          the form

          <blockquote>
            <pre>
<i>columnIndex</i> <i>option</i> <i>value</i> <i>columnIndex</i> <i>option</i> <i>value</i> ...
</pre>
          </blockquote>
        </dd>

        <dd>where each <code><i>option</i></code> may have any of the values
        described in the <a href="#col_options">COLUMN CONFIGURATION
        OPTIONS</a> section.&nbsp; The return value is an empty string.</dd>

        <dd class="tm">
          This command has the same effect as

          <blockquote>
            <pre>
eval [list <i>pathName</i> <a href=
"#configcolumns">configcolumns</a>] <i>columnConfigSpecList</i>
</pre>
          </blockquote>
        </dd>

        <dd>but it is more efficient and easier to use.</dd>

        <dt class="tm" id="configcolumns"><code><i>pathName</i>
        <b>configcolumns</b> ?<i>columnIndex</i> <i>option</i> <i>value</i>
        <i>columnIndex</i> <i>option</i> <i>value</i> ...?</code></dt>

        <dd>For each <code><i>columnIndex</i></code>,
        <code><i>option</i></code>, and <code><i>value</i></code>, the command
        modifies the given option of the given column to have the given
        value.&nbsp; Each <code><i>option</i></code> may have any of the values
        described in the <a href="#col_options">COLUMN CONFIGURATION
        OPTIONS</a> section.&nbsp; The return value is an empty string.</dd>

        <dt class="tm" id="configrowlist"><code><i>pathName</i>
        <b>configrowlist</b> <i>rowConfigSpecList</i></code></dt>

        <dd>
          For each row index, option, and value specified by the list
          <code><i>rowConfigSpecList</i></code>, the command modifies the given
          option of the given row to have the given value.&nbsp; The argument
          <code><i>rowConfigSpecList</i></code> must be a list of the form

          <blockquote>
            <pre>
<i>index</i> <i>option</i> <i>value</i> <i>index</i> <i>option</i> <i>value</i> ...
</pre>
          </blockquote>
        </dd>

        <dd>where each <code><i>option</i></code> may have any of the values
        described in the <a href="#row_options">ROW CONFIGURATION OPTIONS</a>
        section.&nbsp; The return value is an empty string.</dd>

        <dd class="tm">
          This command has the same effect as

          <blockquote>
            <pre>
eval [list <i>pathName</i> <a href=
"#configrows">configrows</a>] <i>rowConfigSpecList</i>
</pre>
          </blockquote>
        </dd>

        <dd>but it is more efficient and easier to use.</dd>

        <dt class="tm" id="configrows"><code><i>pathName</i> <b>configrows</b>
        ?<i>index</i> <i>option</i> <i>value</i> <i>index</i> <i>option</i>
        <i>value</i> ...?</code></dt>

        <dd>For each <code><i>index</i></code>, <code><i>option</i></code>, and
        <code><i>value</i></code>, the command modifies the given option of the
        given row to have the given value.&nbsp; Each
        <code><i>option</i></code> may have any of the values described in the
        <a href="#row_options">ROW CONFIGURATION OPTIONS</a> section.&nbsp; The
        return value is an empty string.</dd>

        <dt class="tm" id="configure"><code><i>pathName</i> <b>configure</b>
        ?<i>option</i>? ?<i>value</i> <i>option</i> <i>value</i>
        ...?</code></dt>

        <dd>Queries or modifies the configuration options of the widget.&nbsp;
        If no <code><i>option</i></code> is specified, the command returns a
        list describing all of the available options for
        <code><i>pathName</i></code> (see <code><b>Tk_ConfigureInfo</b></code>
        for information on the format of this list).&nbsp; If
        <code><i>option</i></code> is specified with no
        <code><i>value</i></code>, then the command returns a list describing
        the one named option (this list will be identical to the corresponding
        sublist of the value returned if no <code><i>option</i></code> is
        specified).&nbsp; If one or more
        <code><i>option</i></code>-<code><i>value</i></code> pairs are
        specified, then the command modifies the given widget option(s) to have
        the given value(s); in this case the return value is an empty
        string.&nbsp; <code><i>option</i></code> may have any of the values
        accepted by the <code><b>tablelist::tablelist</b></code> command.</dd>

        <dt class="tm" id="containing"><code><i>pathName</i> <b>containing</b>
        <i>y</i></code></dt>

        <dd>Given a y-coordinate within the tablelist window, this command
        returns the index of the tablelist item containing that
        y-coordinate.&nbsp; If no corresponding item is found then the return
        value is <code>-1</code>.&nbsp; The coordinate <code><i>y</i></code> is
        expected to be relative to the tablelist window itself (not its body
        component).</dd>

        <dt class="tm" id="containingcell"><code><i>pathName</i>
        <b>containingcell</b> <i>x</i> <i>y</i></code></dt>

        <dd>Given an x- and a y-coordinate within the tablelist window, this
        command returns the index of the tablelist cell containing the point
        having these coordinates.&nbsp; If no corresponding cell is found then
        the row or column component (or both) of the return value is
        <code>-1</code>.&nbsp; The coordinates <code><i>x</i></code> and
        <code><i>y</i></code> are expected to be relative to the tablelist
        window itself (not its body component).</dd>

        <dt class="tm" id="containingcolumn"><code><i>pathName</i>
        <b>containingcolumn</b> <i>x</i></code></dt>

        <dd>Given an x-coordinate within the tablelist window, this command
        returns the index of the tablelist column containing that
        x-coordinate.&nbsp; If no corresponding column is found then the return
        value is <code>-1</code>.&nbsp; The coordinate <code><i>x</i></code> is
        expected to be relative to the tablelist window itself (not its body
        component).</dd>

        <dt class="tm" id="cornerlabelpath"><code><i>pathName</i>
        <b>cornerlabelpath</b></code></dt>

        <dd>Returns the path name of the label widget contained in the corner
        frame (see the <code><b><a href="#cornerpath">cornerpath</a></b></code>
        subcommand.&nbsp; When using Tablelist_tile, the return value will be a
        ttk::label widget of the same style as the header labels.&nbsp; The
        global visual options set for the header labels are automatically
        applied to this (ttk::)label widget, too.</dd>

        <dt class="tm" id="cornerpath"><code><i>pathName</i>
        <b>cornerpath</b></code></dt>

        <dd>Returns the path name of a frame widget that is a sibling of the
        tablelist and is automatically created and destroyed together with the
        latter's header.&nbsp; This frame is called the <b>corner frame</b>,
        because it is designed to be shown to the right of the tablelist
        widget's top-right corner when managing the vertical scrollbar on Mac
        OS X Aqua (see below).&nbsp; The corner frame contains a label or
        ttk::label widget, depending on whether the package Tablelist or
        Tablelist_tile is being used (see the <code><b><a href=
        "#cornerlabelpath">cornerlabelpath</a></b></code> subcommand).&nbsp;
        Whenever the height of the tablelist's header changes, the height of
        the corner frame as well as that of the above-mentioned (ttk::)label
        widget is updated accordingly.</dd>

        <dd class="tm">
          This subcommand enables you to manage the vertical scrollbar (if any)
          to appear below the tablelist widget's header, thus respecting the
          native look &amp; feel on Mac OS X Aqua.&nbsp; As shown in the
          following example, it is recommended to always create a scrolled
          tablelist along with the scrollbar(s) as children of a (ttk::)frame
          widget:

          <blockquote>
            <pre>
# Add some entries to the Tk option database
set winSys [tk windowingsystem]
if {[string compare $winSys "x11"] != 0} {
    option add *ScrollArea.borderWidth                  1
    option add *ScrollArea.relief                       sunken
    option add *ScrollArea.Tablelist.borderWidth        0
    option add *ScrollArea.Tablelist.highlightThickness 0
}

. . .

# Create the tablelist and the scrollbars as
# children of a frame of class ScrollArea
set frm [(ttk::)frame ... -class ScrollArea]
set tbl $frm.tbl
set vsb $frm.vsb
set hsb $frm.hsb
tablelist::tablelist $tbl ... \
    -xscrollcommand [list $hsb set] -yscrollcommand [list $vsb set]
scrollbar $vsb -orient vertical   -command [list $tbl yview]
scrollbar $hsb -orient horizontal -command [list $tbl xview]

. . .

# Manage the widgets within the frame
grid $tbl -row 0 -rowspan 2 -column 0 -sticky news
if {[string compare $winSys "aqua"] == 0} {
    grid [$tbl cornerpath] -row 0 -column 1 -sticky ew
    grid $vsb              -row 1 -column 1 -sticky ns
} else {
    grid $vsb -row 0 -rowspan 2 -column 1 -sticky ns
}
grid $hsb -row 2 -column 0 -sticky ew
grid rowconfigure    $frm 1 -weight 1
grid columnconfigure $frm 0 -weight 1

# Manage the frame
pack $frm -expand yes -fill both
</pre>
          </blockquote>
        </dd>

        <dt id="curcellselection"><code><i>pathName</i>
        <b>curcellselection</b></code></dt>

        <dd>Returns a list containing the canonical indices (of the form
        <code><i>row</i>,<i>col</i></code>, where <code><i>row</i></code> and
        <code><i>col</i></code> are numbers) of all of the elements in the
        tablelist that are currently selected.&nbsp; If there are no such
        elements in the tablelist then an empty string is returned.</dd>

        <dt class="tm" id="curselection"><code><i>pathName</i>
        <b>curselection</b></code></dt>

        <dd>Returns a list containing the numerical indices of all of the items
        in the tablelist that contain at least one selected element.&nbsp; If
        there are no such items in the tablelist then an empty string is
        returned.</dd>

        <dt class="tm" id="delete"><code><i>pathName</i> <b>delete</b>
        <i>first</i> <i>last</i></code><br>
        <code><i>pathName</i> <b>delete</b> <i>indexList</i></code></dt>

        <dd>Deletes one or more items of the tablelist if its <code><b><a href=
        "#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; In the first form of the command,
        <code><i>first</i></code> and <code><i>last</i></code> are indices
        specifying the first and last items in the range to delete.&nbsp; The
        command's second form accepts a list <code><i>indexList</i></code> of
        indices specifying the items to be deleted.&nbsp; In both cases, all
        descendants of the specified items will be deleted, too.&nbsp; The
        return value is an empty string.</dd>

        <dt class="tm" id="deletecolumns"><code><i>pathName</i>
        <b>deletecolumns</b> <i>firstColumn</i> <i>lastColumn</i></code><br>
        <code><i>pathName</i> <b>deletecolumns</b>
        <i>columnIndexList</i></code></dt>

        <dd>Deletes one or more columns of the tablelist if its
        <code><b><a href="#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; In the first form of the command,
        <code><i>firstColumn</i></code> and <code><i>lastColumn</i></code> are
        indices specifying the first and last columns in the range to
        delete.&nbsp; The command's second form accepts a list
        <code><i>columnIndexList</i></code> of indices specifying the columns
        to be deleted.&nbsp; Returns an empty string.</dd>

        <dt class="tm" id="depth"><code><i>pathName</i> <b>depth</b>
        <i>nodeIndex</i></code></dt>

        <dd>Returns the number of steps from the tree node indicated by
        <code><i>nodeIndex</i></code> to the <code><b>root</b></code>
        node.&nbsp; The latter's depth is 0, that of the top-level rows is 1,
        and so on.</dd>

        <dt class="tm" id="descendantcount"><code><i>pathName</i>
        <b>descendantcount</b> <i>nodeIndex</i></code></dt>

        <dd>Returns the number of descendants of the tree node indicated by
        <code><i>nodeIndex</i></code>.&nbsp; If this argument is specified as
        <code><b>root</b></code> then the return value will be the number of
        items of the tablelist widget.</dd>

        <dt class="tm" id="editcell"><code><i>pathName</i> <b>editcell</b>
        <i>cellIndex</i></code></dt>

        <dd>Starts the interactive editing of the cell's contents if the
        tablelist's <code><b><a href="#state">state</a></b></code> is not
        <code><b>disabled</b></code> and the cell is <a href=
        "#isviewable">viewable</a> and editable.&nbsp; Returns an empty
        string.&nbsp; See the <a href="#cell_editing">INTERACTIVE CELL
        EDITING</a> section for details on editablity and on the editing
        process.</dd>

        <dt class="tm" id="editinfo"><code><i>pathName</i>
        <b>editinfo</b></code></dt>

        <dd>Returns a three-element list containing information about the
        tablelist cell whose content is being edited.&nbsp; The first element
        of the list is the full key (of the form
        <code><b>k</b><i>number</i></code>) associated with the item containing
        the tablelist element that is being edited.&nbsp; The second and third
        elements are the cell's row and column indices.&nbsp; If currently no
        cell is being edited then the return value is the list&nbsp; <code>{""
        -1 -1}</code>.</dd>

        <dt class="tm" id="editwinpath"><code><i>pathName</i>
        <b>editwinpath</b></code></dt>

        <dd>Returns the path name of the temporary embedded widget used for
        interactive cell editing, created by the <code><b><a href=
        "#editcell">editcell</a></b></code> subcommand.&nbsp; If no cell is
        currently being edited then the return value is an empty string.&nbsp;
        This subcommand enables you to access the edit window from within the
        commands specified by the <code><b><a href=
        "#editstartcommand">-editstartcommand</a></b></code> and
        <code><b><a href="#editendcommand">-editendcommand</a></b></code>
        configuration options.</dd>

        <dt class="tm" id="editwintag"><code><i>pathName</i>
        <b>editwintag</b></code></dt>

        <dd>Returns the name of a binding tag whose name depends on the path
        name of the tablelist widget and which is associated with some of the
        components of the temporary embedded widget used for interactive cell
        editing.&nbsp; These components depend on the edit window: the widget
        itself in case of a Tk or tile checkbutton or menubutton; the edit
        window's entry children in case of a mentry widget; the only entry or
        entry-like component of the edit window in all other cases (see also
        the <code><b><a href="#entrypath">entrypath</a></b></code>
        subcommand).&nbsp; This binding tag precedes the tag <code><b><a href=
        "#edit_bindings">TablelistEdit</a></b></code> in the list of binding
        tags of the edit window components mentioned above, and is designed to
        be used when defining individual binding scripts for controlling the
        interactive cell editing.</dd>

        <dd class="tm">
          For example, the following command will replace the standard behavior
          of the <code>Return</code> key during cell editing in the tablelist
          widget <code>.tbl</code> with that of the <code>Tab</code> key:

          <blockquote>
            <pre>
bind [.tbl editwintag] &lt;Return&gt; "[bind TablelistEdit &lt;Tab&gt;]; break"
</pre>
          </blockquote>
        </dd>

        <dt id="entrypath"><code><i>pathName</i> <b>entrypath</b></code></dt>

        <dd>Returns the path name of the entry or entry-like component of the
        temporary embedded widget used for interactive cell editing, created by
        the <code><b><a href="#editcell">editcell</a></b></code>
        subcommand.&nbsp; If no cell is currently being edited or the editing
        is taking place with the aid of a Tk or tile checkbutton, Tk or tile
        menubutton, or mentry widget, then the return value is an empty string;
        otherwise it is the path name of a Tk or tile entry, text or ctext, Tk
        or tile spinbox, or BWidget Entry widget, which can be the edit window
        itself or one of its descendants.&nbsp; This subcommand enables you to
        access the entry or entry-like component of the temporary embedded
        widget from within the commands specified by the <code><b><a href=
        "#editstartcommand">-editstartcommand</a></b></code> and
        <code><b><a href="#editendcommand">-editendcommand</a></b></code>
        configuration options.</dd>

        <dt class="tm" id="expand"><code><i>pathName</i> <b>expand</b>
        <i>index</i> ?<b>-fully</b>|<b>-partly</b>?</code></dt>

        <dd>This subcommand expands the specified row of a tablelist used as a
        tree widget, i.e., makes all its children visible.&nbsp; The optional
        argument <code><b>-fully</b></code> (which is the default) indicates
        that the command will be performed recursively, i.e., all of the
        descendants of the node specified by <code><i>index</i></code> will be
        displayed.&nbsp; The <code><b>-partly</b></code> option (which is used
        by the default bindings) restricts the operation to just one hierarchy
        level, indicating that only the children of the specified node will be
        displayed, without changing the expanded/collapsed state of the child
        nodes.</dd>

        <dd class="tm">Before displaying the children of a row, the command
        specified as the value of the <code><b><a href=
        "#expandcommand">-expandcommand</a></b></code> option (if any) is
        automatically concatenated with the name of the tablelist widget and
        the row index, and the resulting script is evaluated in the global
        scope.&nbsp; This enables you to insert a tree node's children on
        demand, just before expanding it.</dd>

        <dd class="tm">For technical reasons (the use of the
        <code><b>-elide</b></code> text widget tag option for collapsing a
        row), this subcommand is not supported for Tk versions earlier than
        8.3.</dd>

        <dt class="tm" id="expandall"><code><i>pathName</i> <b>expandall</b>
        ?<b>-fully</b>|<b>-partly</b>?</code></dt>

        <dd>This subcommand expands all top-level rows of a tablelist used as a
        tree widget, i.e., makes all their children visible.&nbsp; The optional
        argument <code><b>-fully</b></code> (which is the default) indicates
        that the command will be performed recursively, i.e., all of the
        descendants of the top-level nodes will be displayed.&nbsp; The
        <code><b>-partly</b></code> option restricts the operation to just one
        hierarchy level, indicating that only the children of the top-level
        nodes will be displayed, without changing the expanded/collapsed state
        of the child nodes.</dd>

        <dd class="tm">Before displaying the children of a row, the command
        specified as the value of the <code><b><a href=
        "#expandcommand">-expandcommand</a></b></code> option (if any) is
        automatically concatenated with the name of the tablelist widget and
        the row index, and the resulting script is evaluated in the global
        scope.&nbsp; This enables you to insert a tree node's children on
        demand, just before expanding it.</dd>

        <dd class="tm">For technical reasons (the use of the
        <code><b>-elide</b></code> text widget tag option for collapsing a
        row), this subcommand is not supported for Tk versions earlier than
        8.3.</dd>

        <dt class="tm" id="expandedkeys"><code><i>pathName</i>
        <b>expandedkeys</b></code></dt>

        <dd>Returns the list of full keys of the expanded items.</dd>

        <dt class="tm" id="fillcolumn"><code><i>pathName</i> <b>fillcolumn</b>
        <i>columnIndex</i> <i>text</i></code></dt>

        <dd>Sets all the elements of the specified column to the value
        <code><i>text</i></code>.</dd>

        <dt class="tm" id="findcolumnname"><code><i>pathName</i>
        <b>findcolumnname</b> <i>name</i></code></dt>

        <dd>Returns the index of the first column whose name (given by the
        <code><b><a href="#col_name">-name</a></b></code> column configuration
        option) equals <code><i>name</i></code>.&nbsp; If no column has the
        specified name then the return value is <code>-1</code>.</dd>

        <dt class="tm" id="findrowname"><code><i>pathName</i>
        <b>findrowname</b> <i>name</i> ?<b>-descend</b>? ?<b>-parent</b>
        <i>nodeIndex</i>?</code></dt>

        <dd>Returns the row index of the first child of the tree node indicated
        by <code><i>nodeIndex</i></code> whose name (given by the
        <code><b><a href="#row_name">-name</a></b></code> row configuration
        option) equals <code><i>name</i></code>.&nbsp; The
        <code><b>-descend</b></code> option extends the search to all
        descendants of the tree node given by the <code><b>-parent</b></code>
        option.&nbsp; The default is to restrict the search to the parent
        node's children only.&nbsp; The default parent is
        <code><b>root</b></code>.&nbsp; When searching for the given name, the
        items will be visited in the order of their row indices.&nbsp; If none
        of the relevant rows has the specified name then the return value is
        <code>-1</code>.</dd>

        <dt class="tm" id="finishediting"><code><i>pathName</i>
        <b>finishediting</b></code></dt>

        <dd>This subcommand attempts to terminate the interactive editing of
        the contents of the cell whose index was passed to the
        <code><b><a href="#editcell">editcell</a></b></code> subcommand by
        destroying the temporary widget embedded into the cell and updating the
        cell's contents.&nbsp; The exact steps involved are as follows:&nbsp;
        First, the widget's final text is compared to its original one.&nbsp;
        If they are equal then the edit window is destroyed and the cell's
        original contents are restored.&nbsp; If the two strings are different
        and the value of the <code><b><a href=
        "#editendcommand">-editendcommand</a></b></code> configuration option
        is a nonempty string, then the widget's final text is passed to that
        command as its last argument (following the tablelist's path name as
        well as the cell's row and column indices), the resulting script is
        evaluated in the global scope, and the return value becomes the cell's
        new contents after destroying the edit window.&nbsp; However, if from
        within this script the <code><b><a href=
        "#rejectinput">rejectinput</a></b></code> subcommand was invoked then
        the cell's value is not changed and the embedded widget remains
        displayed in the cell; in this case the command returns the boolean
        value <code>0</code>.&nbsp; In all the other cases, the return value is
        <code>1</code>.&nbsp; Immediately before returning the value
        <code>1</code>, the command generates the virtual event
        <code><b>&lt;&lt;TablelistCellUpdated&gt;&gt;</b></code>.&nbsp; For Tk
        versions 8.5 or higher, this virtual event is generated with its
        <code><b>-data</b></code> option set to a list consisting of the
        numerical row and column indices of the cell whose content is being
        edited.&nbsp; If no cell was being edited when the command was invoked
        then the same value <code>1</code> is returned but no virtual event is
        generated.</dd>

        <dd class="tm">This subcommand is called <i>implicitly</i> by pressing
        <code>Return</code> or <code>KP_Enter</code> (together with
        <code>Control</code> if the edit window is a text or ctext widget) when
        editing a cell, or by clicking with the left mouse button anywhere in
        the tablelist's body, outside the cell just being edited, or moving
        into another editable cell by using keyboard navigation.&nbsp; If the
        editing was started with the left mouse button, the edit window is a Tk
        or tile checkbutton, and the value of the <code><b><a href=
        "#instanttoggle">-instanttoggle</a></b></code> option is true, then
        this subcommand will be invoked automatically, without any user
        interaction.</dd>

        <dd class="tm"><b>REMARK:</b>&nbsp; There are also situations where an
        <i>explicit</i> invocation of this subcommand is needed, in order to
        make sure that the cell just being edited gets updated with the text
        entered by the user.&nbsp; For example, if a tablelist widget is part
        of a dialog used for editing some data, then the command associated
        with the button designed to accept the data should call this
        subcommand, because otherwise, if the button is pressed during
        interactive cell editing then the text entered into the edit window
        will get lost.</dd>

        <dt class="tm" id="formatinfo"><code><i>pathName</i>
        <b>formatinfo</b></code></dt>

        <dd>This command is designed to be invoked from within a Tcl command
        specified as the value of the <code><b><a href=
        "#col_formatcommand">-formatcommand</a></b></code> column configuration
        option.&nbsp; It returns a three-element list containing information
        about the tablelist cell whose content is being formatted with the aid
        of that command.&nbsp; The first element of the list is the full key
        (of the form <code><b>k</b><i>number</i></code>) associated with the
        item containing the tablelist element that is being formatted.&nbsp;
        The second and third elements are the cell's row and column
        indices.</dd>

        <dd class="tm">
          <b>REMARK:</b>&nbsp; This subcommand is needed in cases where the
          result of the formatting should depend on the cell's row.&nbsp; To be
          able to use it, specify the value of the
          <code><b>-formatcommand</b></code> column configuration option
          as&nbsp; <code>[<b>list</b> <i>formatCommand</i>
          <i>pathName</i>]</code>,&nbsp; like in the following example:

          <blockquote>
            <pre>
.tbl columnconfigure 1 -formatcommand [list formatValue .tbl]

proc formatValue {tbl val} {
    # Get information about the cell whose content is being formatted
    foreach {key row col} [$tbl formatinfo] {}

    # Return a string depending on $val and $row (or $key)
    . . .
}
</pre>
          </blockquote>
        </dd>

        <dt id="get"><code><i>pathName</i> <b>get</b> <i>first</i>
        <i>last</i></code><br>
        <code><i>pathName</i> <b>get</b> <i>indexList</i></code></dt>

        <dd>The first form of the command returns a list whose elements are all
        of the tablelist items (i.e., row contents) between
        <code><i>first</i></code> and <code><i>last</i></code>,
        inclusive.&nbsp; The value returned by the second form depends on the
        number of elements in the list <code><i>indexList</i></code>: if the
        latter contains exactly one index then the return value is the
        tablelist item indicated by that index (or an empty string if the index
        refers to a non-existent item); otherwise the command returns the list
        of all of the tablelist items corresponding to the indices specified by
        <code><i>indexList</i></code>.</dd>

        <dt class="tm" id="getcells"><code><i>pathName</i> <b>getcells</b>
        <i>firstCell</i> <i>lastCell</i></code><br>
        <code><i>pathName</i> <b>getcells</b> <i>cellIndexList</i></code></dt>

        <dd>The first form of the command returns a list whose elements are all
        of the tablelist elements (i.e., cell contents) between
        <code><i>firstCell</i></code> and <code><i>lastCell</i></code>,
        inclusive.&nbsp; The value returned by the second form depends on the
        number of elements in the list <code><i>cellIndexList</i></code>: if
        the latter contains exactly one cell index then the return value is the
        tablelist element indicated by that cell index; otherwise the command
        returns the list of all of the tablelist elements corresponding to the
        cell indices specified by <code><i>cellIndexList</i></code>.</dd>

        <dt class="tm" id="getcolumns"><code><i>pathName</i> <b>getcolumns</b>
        <i>firstColumn</i> <i>lastColumn</i></code><br>
        <code><i>pathName</i> <b>getcolumns</b>
        <i>columnIndexList</i></code></dt>

        <dd>The first form of the command returns a list whose elements are
        lists themselves, where each of the sublists corresponds to exactly one
        column between <code><i>firstColumn</i></code> and
        <code><i>lastColumn</i></code>, inclusive, and consists of all of the
        tablelist elements contained in that column.&nbsp; The value returned
        by the second form depends on the number of elements in the list
        <code><i>columnIndexList</i></code>: if the latter contains exactly one
        column index then the return value is a list consisting of all of the
        tablelist elements contained in the column indicated by that column
        index; otherwise the command returns a list whose elements are lists
        themselves, where each of the sublists corresponds to exactly one
        column index in <code><i>columnIndexList</i></code> and consists of all
        of the tablelist elements contained in that column.</dd>

        <dt class="tm" id="getformatted"><code><i>pathName</i>
        <b>getformatted</b> <i>first</i> <i>last</i></code><br>
        <code><i>pathName</i> <b>getformatted</b> <i>indexList</i></code></dt>

        <dd>The first form of the command returns a list whose elements are all
        of the <a href="#col_formatted">formatted</a> tablelist items (i.e.,
        formatted row contents) between <code><i>first</i></code> and
        <code><i>last</i></code>, inclusive.&nbsp; The value returned by the
        second form depends on the number of elements in the list
        <code><i>indexList</i></code>: if the latter contains exactly one index
        then the return value is the formatted tablelist item indicated by that
        index (or an empty string if the index refers to a non-existent item);
        otherwise the command returns the list of all of the formatted
        tablelist items corresponding to the indices specified by
        <code><i>indexList</i></code>.</dd>

        <dt class="tm" id="getformattedcells"><code><i>pathName</i>
        <b>getformattedcells</b> <i>firstCell</i> <i>lastCell</i></code><br>
        <code><i>pathName</i> <b>getformattedcells</b>
        <i>cellIndexList</i></code></dt>

        <dd>The first form of the command returns a list whose elements are all
        of the <a href="#col_formatted">formatted</a> tablelist elements (i.e.,
        formatted cell contents) between <code><i>firstCell</i></code> and
        <code><i>lastCell</i></code>, inclusive.&nbsp; The value returned by
        the second form depends on the number of elements in the list
        <code><i>cellIndexList</i></code>: if the latter contains exactly one
        cell index then the return value is the formatted tablelist element
        indicated by that cell index; otherwise the command returns the list of
        all of the formatted tablelist elements corresponding to the cell
        indices specified by <code><i>cellIndexList</i></code>.</dd>

        <dt class="tm" id="getformattedcolumns"><code><i>pathName</i>
        <b>getformattedcolumns</b> <i>firstColumn</i>
        <i>lastColumn</i></code><br>
        <code><i>pathName</i> <b>getformattedcolumns</b>
        <i>columnIndexList</i></code></dt>

        <dd>The first form of the command returns a list whose elements are
        lists themselves, where each of the sublists corresponds to exactly one
        column between <code><i>firstColumn</i></code> and
        <code><i>lastColumn</i></code>, inclusive, and consists of all of the
        <a href="#col_formatted">formatted</a> tablelist elements contained in
        that column.&nbsp; The value returned by the second form depends on the
        number of elements in the list <code><i>columnIndexList</i></code>: if
        the latter contains exactly one column index then the return value is a
        list consisting of all of the formatted tablelist elements contained in
        the column indicated by that column index; otherwise the command
        returns a list whose elements are lists themselves, where each of the
        sublists corresponds to exactly one column index in
        <code><i>columnIndexList</i></code> and consists of all of the
        formatted tablelist elements contained in that column.</dd>

        <dt class="tm" id="getfullkeys"><code><i>pathName</i>
        <b>getfullkeys</b> <i>first</i> <i>last</i></code><br>
        <code><i>pathName</i> <b>getfullkeys</b> <i>indexList</i></code></dt>

        <dd>The first form of the command returns a list whose elements are all
        of the full keys associated with the tablelist items between
        <code><i>first</i></code> and <code><i>last</i></code>,
        inclusive.&nbsp; The value returned by the second form depends on the
        number of elements in the list <code><i>indexList</i></code>: if the
        latter contains exactly one index then the return value is the full key
        associated with the tablelist item indicated by that index (or an empty
        string if the index refers to a non-existent item); otherwise the
        command returns the list of all of the full keys associated with the
        tablelist items corresponding to the indices specified by
        <code><i>indexList</i></code>.</dd>

        <dd class="tm">Each item of a tablelist widget has a unique sequence
        number that remains unchanged until the item is deleted, thus acting as
        a key that uniquely identifies the item even if the latter's position
        (i.e., numerical row index) changes.&nbsp; This command provides
        read-only access to the full keys obtained by prepending the letter
        <code><b>k</b></code> to these internal item IDs.</dd>

        <dt class="tm" id="getkeys"><code><i>pathName</i> <b>getkeys</b>
        <i>first</i> <i>last</i></code><br>
        <code><i>pathName</i> <b>getkeys</b> <i>indexList</i></code></dt>

        <dd>The first form of the command returns a list whose elements are all
        of the sequence numbers associated with the tablelist items between
        <code><i>first</i></code> and <code><i>last</i></code>,
        inclusive.&nbsp; The value returned by the second form depends on the
        number of elements in the list <code><i>indexList</i></code>: if the
        latter contains exactly one index then the return value is the sequence
        number associated with the tablelist item indicated by that index (or
        an empty string if the index refers to a non-existent item); otherwise
        the command returns the list of all of the sequence numbers associated
        with the tablelist items corresponding to the indices specified by
        <code><i>indexList</i></code>.</dd>

        <dd class="tm">Each item of a tablelist widget has a unique sequence
        number that remains unchanged until the item is deleted, thus acting as
        a key that uniquely identifies the item even if the latter's position
        (i.e., numerical row index) changes.&nbsp; This command provides
        read-only access to these internal item IDs.</dd>

        <dt class="tm" id="hasattrib"><code><i>pathName</i> <b>hasattrib</b>
        <i>name</i></code></dt>

        <dd>Returns <code>1</code> if the attribute <code><i>name</i></code>
        exists and <code>0</code> otherwise.</dd>

        <dt class="tm" id="hascellattrib"><code><i>pathName</i>
        <b>hascellattrib</b> <i>cellIndex</i> <i>name</i></code></dt>

        <dd>Returns <code>1</code> if the attribute <code><i>name</i></code>
        for the cell given by <code><i>cellIndex</i></code> exists and
        <code>0</code> otherwise.</dd>

        <dt class="tm" id="hascolumnattrib"><code><i>pathName</i>
        <b>hascolumnattrib</b> <i>columnIndex</i> <i>name</i></code></dt>

        <dd>Returns <code>1</code> if the attribute <code><i>name</i></code>
        for the column given by <code><i>columnIndex</i></code> exists and
        <code>0</code> otherwise.</dd>

        <dt class="tm" id="hasrowattrib"><code><i>pathName</i>
        <b>hasrowattrib</b> <i>index</i> <i>name</i></code></dt>

        <dd>Returns <code>1</code> if the attribute <code><i>name</i></code>
        for the row given by <code><i>index</i></code> exists and
        <code>0</code> otherwise.</dd>

        <dt class="tm" id="imagelabelpath"><code><i>pathName</i>
        <b>imagelabelpath</b> <i>cellIndex</i></code></dt>

        <dd>Returns the path name of the label widget containing the image
        embedded into the cell given by <code><i>cellIndex</i></code>, as
        specified with the <code><b><a href="#cell_image">-image</a></b></code>
        option of the <code><b><a href=
        "#cellconfigure">cellconfigure</a></b></code> subcommand.&nbsp; If no
        image is currently embedded into the cell then the return value is an
        empty string.</dd>

        <dt class="tm" id="index"><code><i>pathName</i> <b>index</b>
        <i>index</i></code></dt>

        <dd>Returns the integer row index value that corresponds to
        <code><i>index</i></code>.&nbsp; If <code><i>index</i></code> is
        <code><b>end</b></code> then the return value is the number of items in
        the tablelist (not the index of the last item).</dd>

        <dt class="tm" id="insert"><code><i>pathName</i> <b>insert</b>
        <i>index</i> ?<i>item</i> <i>item</i> ...?</code></dt>

        <dd>Inserts zero or more new items in the widget's internal list just
        before the item given by <code><i>index</i></code> if the tablelist's
        <code><b><a href="#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; If <code><i>index</i></code> equals
        the number of items or is specified as <code><b>end</b></code> then the
        new items are added to the end of the widget's list.&nbsp; Tabulator
        characters are displayed as <code>\t</code> (i.e., a backslash followed
        by a <code>t</code>) but are inserted unchanged into the internal
        list.&nbsp; Newline characters will force line breaks, i.e., will give
        rise to multi-line elements (which are displayed in embedded message
        widgets, created on demand).&nbsp; The return value is the list of full
        keys associated with the items just inserted.</dd>

        <dd class="tm"><b>REMARK:</b>&nbsp; This subcommand is not suitable for
        inserting items into a tablelist designed for displaying a tree
        hierarchy.&nbsp; For such tablelist widgets use the <code><b><a href=
        "#insertchildren">insertchildren</a></b></code> or <code><b><a href=
        "#insertchildlist">insertchildlist</a></b></code> subcommand.</dd>

        <dt class="tm" id="insertchildlist"><code><i>pathName</i>
        <b>insertchildlist</b> <i>parentNodeIndex</i> <i>childIndex</i>
        <i>itemList</i></code></dt>

        <dd>Inserts the items of the list <code><i>itemList</i></code> in the
        widget's internal list of children of the node specified by
        <code><i>parentNodeIndex</i></code> just before the item given by
        <code><i>childIndex</i></code> if the tablelist's <code><b><a href=
        "#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; <code><i>childIndex</i></code> must
        be a number or <code><b>end</b></code>; if it equals the number of
        children of the node given by <code><i>parentNodeIndex</i></code> or is
        specified as <code><b>end</b></code> then the new items are added to
        the end of the parent's list of children.&nbsp; Tabulator characters
        are displayed as <code>\t</code> (i.e., a backslash followed by a
        <code>t</code>) but are inserted unchanged into the internal
        list.&nbsp; Newline characters will force line breaks, i.e., will give
        rise to multi-line elements (which are displayed in embedded message
        widgets, created on demand).&nbsp; The return value is the list of full
        keys associated with the items just inserted.</dd>

        <dd class="tm">
          This command has the same effect as

          <blockquote>
            <pre>
eval [list <i>pathName</i> <a href=
"#insertchildren">insertchildren</a> <i>parentNodeIndex</i> <i>childIndex</i>] <i>itemList</i>
</pre>
          </blockquote>
        </dd>

        <dd>but it is more efficient and easier to use.</dd>

        <dd class="tm">For technical reasons (the use of the
        <code><b>-elide</b></code> text widget tag option for collapsing a
        row), this subcommand is not supported for Tk versions earlier than
        8.3.</dd>

        <dd class="tm"><b>REMARK:</b>&nbsp; You can achieve a quite significant
        speadup by using this subcommand to insert a whole list of items rather
        than using multiple invocations of <code><b><a href=
        "#insertchildren">insertchildren</a></b></code>.</dd>

        <dt class="tm" id="insertchildren"><code><i>pathName</i>
        <b>insertchildren</b> <i>parentNodeIndex</i> <i>childIndex</i>
        ?<i>item</i> <i>item</i> ...?</code></dt>

        <dd>Inserts zero or more new items in the widget's internal list of
        children of the node specified by <code><i>parentNodeIndex</i></code>
        just before the item given by <code><i>childIndex</i></code> if the
        tablelist's <code><b><a href="#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; <code><i>childIndex</i></code> must
        be a number or <code><b>end</b></code>; if it equals the number of
        children of the node given by <code><i>parentNodeIndex</i></code> or is
        specified as <code><b>end</b></code> then the new items are added to
        the end of the parent's list of children.&nbsp; Tabulator characters
        are displayed as <code>\t</code> (i.e., a backslash followed by a
        <code>t</code>) but are inserted unchanged into the internal
        list.&nbsp; Newline characters will force line breaks, i.e., will give
        rise to multi-line elements (which are displayed in embedded message
        widgets, created on demand).&nbsp; The return value is the list of full
        keys associated with the items just inserted.</dd>

        <dd class="tm">For technical reasons (the use of the
        <code><b>-elide</b></code> text widget tag option for collapsing a
        row), this subcommand is not supported for Tk versions earlier than
        8.3.</dd>

        <dd class="tm"><b>REMARK:</b>&nbsp; It is explicitly allowed to
        abbreviate the name <code><b>insertchildren</b></code> as
        <code><b>insertchild</b></code>.&nbsp; This comes in handy when using
        this subcommand to insert just one child item.</dd>

        <dt class="tm" id="insertcolumnlist"><code><i>pathName</i>
        <b>insertcolumnlist</b> <i>columnIndex</i>
        <i>columnList</i></code></dt>

        <dd>Inserts the columns specified by the list
        <code><i>columnList</i></code> just before the column given by
        <code><i>columnIndex</i></code> if the tablelist's <code><b><a href=
        "#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; If <code><i>columnIndex</i></code>
        equals the number of columns or is specified as <code><b>end</b></code>
        then the new columns are added to the end of the column list.&nbsp; The
        argument <code><i>columnList</i></code> must be a list containing the
        width, title, and optional alignment specifications for the new
        columns, in the same form as in the case of the <code><b><a href=
        "#columns">-columns</a></b></code> configuration option.&nbsp; The
        return value is an empty string.&nbsp; The elements of the new columns
        are initially empty strings; the easiest way to change these values is
        to use the <code><b><a href="#fillcolumn">fillcolumn</a></b></code>
        subcommand or the <code><b><a href="#col_text">-text</a></b></code>
        column configuration option.</dd>

        <dd class="tm">
          This command has the same effect as

          <blockquote>
            <pre>
eval [list <i>pathName</i> <a href=
"#insertcolumns">insertcolumns</a> <i>columnIndex</i>] <i>columnList</i>
</pre>
          </blockquote>
        </dd>

        <dd>but it is more efficient and easier to use.</dd>

        <dt class="tm" id="insertcolumns"><code><i>pathName</i>
        <b>insertcolumns</b> <i>columnIndex</i> ?<i>width</i> <i>title</i>
        ?<i>alignment</i>? <i>width</i> <i>title</i> ?<i>alignment</i>?
        ...?</code></dt>

        <dd>Inserts zero or more new columns just before the column given by
        <code><i>columnIndex</i></code> if the tablelist's <code><b><a href=
        "#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; If <code><i>columnIndex</i></code>
        equals the number of columns or is specified as <code><b>end</b></code>
        then the new columns are added to the end of the column list.&nbsp; The
        arguments following the column index have the same meanings as in the
        case of the <code><b><a href="#columns">-columns</a></b></code>
        configuration option.&nbsp; The return value is an empty string.&nbsp;
        The elements of the new columns are initially empty strings; the
        easiest way to change these values is to use the <code><b><a href=
        "#fillcolumn">fillcolumn</a></b></code> subcommand or the
        <code><b><a href="#col_text">-text</a></b></code> column configuration
        option.</dd>

        <dt class="tm" id="insertlist"><code><i>pathName</i> <b>insertlist</b>
        <i>index</i> <i>itemList</i></code></dt>

        <dd>Inserts the items of the list <code><i>itemList</i></code> in the
        widget's internal list just before the item given by
        <code><i>index</i></code> if the tablelist's <code><b><a href=
        "#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; If <code><i>index</i></code> equals
        the number of items or is specified as <code><b>end</b></code> then the
        new items are added to the end of the widget's list.&nbsp; Tabulator
        characters are displayed as <code>\t</code> (i.e., a backslash followed
        by a <code>t</code>) but are inserted unchanged into the internal
        list.&nbsp; Newline characters will force line breaks, i.e., will give
        rise to multi-line elements (which are displayed in embedded message
        widgets, created on demand).&nbsp; The return value is the list of full
        keys associated with the items just inserted.</dd>

        <dd>
          This command has the same effect as

          <blockquote>
            <pre>
eval [list <i>pathName</i> <a href=
"#insert">insert</a> <i>index</i>] <i>itemList</i>
</pre>
          </blockquote>
        </dd>

        <dd>but it is more efficient and easier to use.</dd>

        <dd class="tm"><b>REMARK 1:</b>&nbsp; You can achieve a quite
        significant speadup by using this subcommand to insert a whole list of
        items rather than using multiple invocations of <code><b><a href=
        "#insert">insert</a></b></code>.</dd>

        <dd class="tm"><b>REMARK 2:</b>&nbsp; This subcommand is not suitable
        for inserting items into a tablelist designed for displaying a tree
        hierarchy.&nbsp; For such tablelist widgets use the <code><b><a href=
        "#insertchildlist">insertchildlist</a></b></code> or <code><b><a href=
        "#insertchildren">insertchildren</a></b></code> subcommand.</dd>

        <dt class="tm" id="iselemsnipped"><code><i>pathName</i>
        <b>iselemsnipped</b> <i>cellIndex</i> <i>fullTextName</i></code></dt>

        <dd>Returns the value <code>1</code> if the text displayed in the cell
        specified by <code><i>cellIndex</i></code> is snipped and
        <code>0</code> otherwise.&nbsp; In both cases, the full (unsnipped)
        cell text is stored in the variable having the name given by
        <code><i>fullTextName</i></code>; this full text can be the cell's
        contents or the string obtained from the latter by using the
        <code><b><a href="#col_formatcommand">-formatcommand</a></b></code>
        option of the cell's column.&nbsp; The most common invocation of this
        command occurs within the procedure specified as the value of the
        <code><b><a href="#tooltipaddcommand">-tooltipaddcommand</a></b></code>
        configuration option.</dd>

        <dt class="tm" id="isexpanded"><code><i>pathName</i> <b>isexpanded</b>
        <i>index</i></code></dt>

        <dd>Returns the value <code>1</code> if the row indicated by
        <code><i>index</i></code> is expanded and <code>0</code>
        otherwise.</dd>

        <dt class="tm" id="istitlesnipped"><code><i>pathName</i>
        <b>istitlesnipped</b> <i>columnIndex</i>
        <i>fullTextName</i></code></dt>

        <dd>Returns the value <code>1</code> if the text displayed in the
        header label specified by <code><i>columnIndex</i></code> is snipped
        and <code>0</code> otherwise.&nbsp; In both cases, the full (unsnipped)
        label text is stored in the variable having the name given by
        <code><i>fullTextName</i></code>.&nbsp; The most common invocation of
        this command occurs within the procedure specified as the value of the
        <code><b><a href="#tooltipaddcommand">-tooltipaddcommand</a></b></code>
        configuration option.</dd>

        <dt class="tm" id="isviewable"><code><i>pathName</i> <b>isviewable</b>
        <i>index</i></code></dt>

        <dd>Returns the value <code>1</code> if the row indicated by
        <code><i>index</i></code> is <b>viewable</b> and <code>0</code>
        otherwise.&nbsp; A tablelist row is called viewable if the value of its
        <code><b><a href="#row_hide">-hide</a></b></code> option is false and
        all its ancestors are (partly) expanded. &nbsp; Likewise, a tablelist
        cell is called viewable if its row is viewable and the value of its
        column's <code><b><a href="#col_hide">-hide</a></b></code> option is
        false.</dd>

        <dt class="tm" id="itemlistvar"><code><i>pathName</i>
        <b>itemlistvar</b></code></dt>

        <dd>
          Returns the name of a variable used by Tablelist to hold the widget's
          internal list.&nbsp; The recommended way to use this variable is to
          create a link to it with the aid of the <code><b>upvar</b></code>
          command, like in the following example:

          <blockquote>
            <pre>
upvar #0 [.tbl itemlistvar] itemList
</pre>
          </blockquote>
        </dd>

        <dd>In this example, the value of the variable <code>itemList</code>
        will be the internal list of the tablelist widget
        <code>.tbl</code>.&nbsp; Each element of the widget's internal list
        corresponds to one item, and it is in turn a list whose elements
        correspond to the elements of that item, except that it has one
        additional element, holding the item's full key.</dd>

        <dd class="tm"><b>REMARK:</b>&nbsp; The <code><b>itemlistvar</b></code>
        command provides an efficient way for accessing this internal list,
        instead of retrieving the items with the <code><b><a href=
        "#get">get</a></b></code> subcommand or using the <code><b><a href=
        "#listvariable">-listvariable</a></b></code> option (these methods
        consume significantly more memory).&nbsp; It can be useful in
        situations where the elements of a tablelist widget are to be accessed
        for creating text files, HTML output, XML data, database commands,
        etc.&nbsp; This should, however, be a strictly readonly access;
        otherwise the results will be unpredictable!</dd>

        <dt class="tm" id="labelpath"><code><i>pathName</i> <b>labelpath</b>
        <i>columnIndex</i></code></dt>

        <dd>Returns the path name of the header label corresponding to the
        column indicated by <code><i>columnIndex</i></code>.</dd>

        <dt class="tm" id="labels"><code><i>pathName</i>
        <b>labels</b></code></dt>

        <dd>Returns a list containing the path names of all header labels of
        the widget.</dd>

        <dt class="tm" id="labeltag"><code><i>pathName</i>
        <b>labeltag</b></code></dt>

        <dd>Returns the name of a binding tag whose name depends on the path
        name of the tablelist widget and which is associated with the header
        labels as well as with the additional widgets placed by Tablelist into
        the latters for displaying header images and sort arrows.&nbsp; This
        binding tag is designed to be used when defining non-default binding
        scripts for the header labels.&nbsp; From within such event handling
        scripts you can retrieve the column number and the tablelist widget's
        path name with the aid of the helper commands <code><b><a href=
        "tablelistBinding.html#getTablelistColumn">tablelist::getTablelistColumn</a></b></code>
        and <code><b><a href=
        "tablelistBinding.html#getTablelistPath">tablelist::getTablelistPath</a></b></code>.</dd>

        <dt class="tm" id="move"><code><i>pathName</i> <b>move</b>
        <i>sourceIndex</i> <i>targetIndex</i></code><br>
        <code><i>pathName</i> <b>move</b> <i>sourceIndex</i>
        <i>targetParentNodeIndex</i> <i>targetChildIndex</i></code></dt>

        <dd>The first form of the command moves the item indicated by
        <code><i>sourceIndex</i></code> just before the one given by
        <code><i>targetIndex</i></code> if the tablelist's <code><b><a href=
        "#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; If <code><i>targetIndex</i></code>
        equals the nunber of items or is specified as <code><b>end</b></code>
        then the source item is moved after the last one.&nbsp; The item
        specified by <code><i>targetIndex</i></code> must have the same parent
        as the one given by <code><i>sourceIndex</i></code>, or else it must be
        the item just below the last descendant of the source node's
        parent.</dd>

        <dd class="tm">The command's second form moves the item indicated by
        <code><i>sourceIndex</i></code> just before the node having the parent
        indicated by <code><i>targetParentNodeIndex</i></code> and the index
        <code><i>targetChildIndex</i></code> in the parent's list of children
        if the tablelist's <code><b><a href="#state">state</a></b></code> is
        not <code><b>disabled</b></code>.&nbsp;
        <code><i>targetChildIndex</i></code> must be a number or
        <code><b>end</b></code>; if it equals the number of children of the
        target parent node or is specified as <code><b>end</b></code> then the
        source item is moved after the target parent node's last child.</dd>

        <dd class="tm">Both forms of the command preserve the node hierarchy
        under the source item, by moving its descendants accordingly.&nbsp; The
        return value is an empty string.</dd>

        <dt class="tm" id="movecolumn"><code><i>pathName</i> <b>movecolumn</b>
        <i>sourceColumn</i> <i>targetColumn</i></code></dt>

        <dd>Moves the column indicated by <code><i>sourceColumn</i></code> just
        before the one given by <code><i>targetColumn</i></code> if the
        tablelist's <code><b><a href="#state">state</a></b></code> is not
        <code><b>disabled</b></code>.&nbsp; If <code><i>targetColumn</i></code>
        equals the number of columns or is specified as <code><b>end</b></code>
        then the source column is moved after the last one.&nbsp; Returns an
        empty string.</dd>

        <dt class="tm" id="nearest"><code><i>pathName</i> <b>nearest</b>
        <i>y</i></code></dt>

        <dd>Given a y-coordinate within the tablelist window, this command
        returns the index of the <a href="#isviewable">viewable</a> tablelist
        item nearest to that y-coordinate.&nbsp; The coordinate
        <code><i>y</i></code> is expected to be relative to the tablelist
        window itself (not its body component).</dd>

        <dt class="tm" id="nearestcell"><code><i>pathName</i>
        <b>nearestcell</b> <i>x</i> <i>y</i></code></dt>

        <dd>Given an x- and a y-coordinate within the tablelist window, this
        command returns the index of the <a href="#isviewable">viewable</a>
        tablelist cell nearest to the point having these coordinates.&nbsp; The
        coordinates <code><i>x</i></code> and <code><i>y</i></code> are
        expected to be relative to the tablelist window itself (not its body
        component).</dd>

        <dt class="tm" id="nearestcolumn"><code><i>pathName</i>
        <b>nearestcolumn</b> <i>x</i></code></dt>

        <dd>Given an x-coordinate within the tablelist window, this command
        returns the index of the non-hidden tablelist column nearest to that
        x-coordinate.&nbsp; The coordinate <code><i>x</i></code> is expected to
        be relative to the tablelist window itself (not its body
        component).</dd>

        <dt class="tm" id="noderow"><code><i>pathName</i> <b>noderow</b>
        <i>parentNodeIndex</i> <i>childIndex</i></code></dt>

        <dd>Returns the numerical row index of the node having the parent
        indicated by <code><i>parentNodeIndex</i></code> and the index
        <code><i>childIndex</i></code> in the parent's list of children.&nbsp;
        <code><i>childIndex</i></code> must be a number or
        <code><b>end</b></code>; if it equals the number of children of the
        parent node or is specified as <code><b>end</b></code> then the return
        value will be the row index of the item following the parent node's
        last descendant.</dd>

        <dt class="tm" id="parentkey"><code><i>pathName</i> <b>parentkey</b>
        <i>nodeIndex</i></code></dt>

        <dd>Returns the full key of the parent of the tree node indicated by
        <code><i>nodeIndex</i></code>.&nbsp; If this argument is specified as
        <code><b>root</b></code> then the return value will be an empty
        string.&nbsp; If <code><i>nodeIndex</i></code> identifies a top-level
        item then the subcommand will return <code><b>root</b></code>.&nbsp;
        For all other items the return value will be a full key of the form
        <code><b>k</b><i>number</i></code>.</dd>

        <dt class="tm" id="refreshsorting"><code><i>pathName</i>
        <b>refreshsorting</b> ?<i>parentNodeIndex</i>?</code></dt>

        <dd>Sorts the children of the tablelist node specified by
        <code><i>parentNodeIndex</i></code> according to the parameters of the
        most recent <code><b><a href="#sort">sort</a></b></code>,
        <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code>, or
        <code><b><a href="#sortbycolumnlist">sortbycolumnlist</a></b></code>
        invocation.&nbsp; If the items haven't been sorted at all, or the sort
        information was reset by invoking <code><b><a href=
        "#resetsortinfo">resetsortinfo</a></b></code>, then no sorting takes
        place.&nbsp; The optional argument <code><i>parentNodeIndex</i></code>
        defaults to <code><b>root</b></code>, meaning that all the items are to
        be sorted per default.&nbsp; The return value is an empty string.</dd>

        <dt class="tm" id="rejectinput"><code><i>pathName</i>
        <b>rejectinput</b></code></dt>

        <dd>If invoked from within the Tcl command specified by the
        <code><b><a href="#editendcommand">-editendcommand</a></b></code>
        configuration option, then this subcommand prevents the termination of
        the interactive editing of the contents of the cell whose index was
        passed to the <code><b><a href="#editcell">editcell</a></b></code>
        subcommand.&nbsp; It invokes the <code><b><a href=
        "#seecell">seecell</a></b></code> subcommand to make sure the
        respective cell becomes visible (in case it was scrolled out of view),
        and sets the focus to the temporary widget embedded into the
        cell.&nbsp; This command enables you to reject the widget's text during
        the final validation of the string intended to become the new cell
        contents.&nbsp; The return value is an empty string.</dd>

        <dt class="tm" id="resetsortinfo"><code><i>pathName</i>
        <b>resetsortinfo</b></code></dt>

        <dd>Resets the information about the sorting of the items.&nbsp;
        Subsequent invocations of <code><b><a href=
        "#sortcolumn">sortcolumn</a></b></code> and <code><b><a href=
        "#sortorder">sortorder</a></b></code> will return <code>-1</code> and
        an empty string, respectively.&nbsp; Similarly, subsequent invocations
        of <code><b><a href="#sortcolumnlist">sortcolumnlist</a></b></code> and
        <code><b><a href="#sortorderlist">sortorderlist</a></b></code> will
        return an empty string.&nbsp; This command also removes any existing
        up- or down-arrows displayed by an earlier invocation of
        <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> or
        <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code>.&nbsp; The return
        value is an empty string.</dd>

        <dt class="tm" id="rowattrib"><code><i>pathName</i> <b>rowattrib</b>
        <i>index</i> ?<i>name</i>? ?<i>value</i> <i>name</i> <i>value</i>
        ...?</code></dt>

        <dd>Queries or modifies the attributes of the row given by
        <code><i>index</i></code>.&nbsp; If no <code><i>name</i></code> is
        specified, the command returns a list of pairs, each of which contains
        the name and the value of an attribute for the row.&nbsp; If
        <code><i>name</i></code> is specified with no
        <code><i>value</i></code>, then the command returns the value of the
        one named row attribute, or an empty string if no corresponding value
        exists (you can use the <code><b><a href=
        "#hasrowattrib">hasrowattrib</a></b></code> subcommand to distinguish
        this case from the one that the value of an <i>existing</i> row
        attribute is an empty string).&nbsp; If one or more
        <code><i>name</i></code>-<code><i>value</i></code> pairs are specified,
        then the command sets the given row attribute(s) to the given value(s);
        in this case the return value is an empty string.&nbsp;
        <code><i>name</i></code> may be an arbitrary string.</dd>

        <dt class="tm" id="rowcget"><code><i>pathName</i> <b>rowcget</b>
        <i>index</i> <i>option</i></code></dt>

        <dd>Returns the current value of the row configuration option given by
        <code><i>option</i></code> for the row specified by
        <code><i>index</i></code>.&nbsp; <code><i>option</i></code> may have
        any of the values accepted by the <code><b><a href=
        "#rowconfigure">rowconfigure</a></b></code> command.</dd>

        <dt class="tm" id="rowconfigure"><code><i>pathName</i>
        <b>rowconfigure</b> <i>index</i> ?<i>option</i>? ?<i>value</i>
        <i>option</i> <i>value</i> ...?</code></dt>

        <dd>Queries or modifies the configuration options of the row given by
        <code><i>index</i></code>.&nbsp; If no <code><i>option</i></code> is
        specified, the command returns a list describing all of the available
        options for the row (see <code><b>Tk_ConfigureInfo</b></code> for
        information on the format of this list).&nbsp; If
        <code><i>option</i></code> is specified with no
        <code><i>value</i></code>, then the command returns a list describing
        the one named option (this list will be identical to the corresponding
        sublist of the value returned if no <code><i>option</i></code> is
        specified).&nbsp; If one or more
        <code><i>option</i></code>-<code><i>value</i></code> pairs are
        specified, then the command modifies the given row option(s) to have
        the given value(s); in this case the return value is an empty
        string.&nbsp; <code><i>option</i></code> may have any of the values
        described in the <a href="#row_options">ROW CONFIGURATION OPTIONS</a>
        section.</dd>

        <dt class="tm" id="scan"><code><i>pathName</i> <b>scan</b>
        <i>option</i> <i>args</i></code></dt>

        <dd>This command is used to implement scanning on tablelist
        widgets.&nbsp; It has two forms, depending on
        <code><i>option</i></code>:</dd>

        <dd>
          <dl>
            <dt class="tm"><code><i>pathName</i> <b>scan</b> <b>mark</b>
            <i>x</i> <i>y</i></code></dt>

            <dd>Records <code><i>x</i></code> and <code><i>y</i></code> and the
            current view in the tablelist window; used in conjunction with
            later&nbsp; <code><b>scan</b> <b>dragto</b></code>&nbsp;
            commands.&nbsp; Typically this command is associated with a mouse
            button press in the body component of the widget.&nbsp; It returns
            an empty string.&nbsp; The coordinates <code><i>x</i></code> and
            <code><i>y</i></code> are expected to be relative to the tablelist
            window itself (not its body component).</dd>

            <dt class="tm"><code><i>pathName</i> <b>scan</b> <b>dragto</b>
            <i>x</i> <i>y</i></code></dt>

            <dd>This command computes the difference between its
            <code><i>x</i></code> and <code><i>y</i></code> arguments to the
            last&nbsp; <code><b>scan</b> <b>mark</b></code>&nbsp; command for
            the widget.&nbsp; It then adjusts the view (the vertical one only
            in the body component) by 10 times the difference in
            coordinates.&nbsp; This command is typically associated with mouse
            motion events in the body component of the widget, to produce the
            effect of dragging the table at high speed through the
            window.&nbsp; The return value is an empty string.&nbsp; The
            coordinates <code><i>x</i></code> and <code><i>y</i></code> are
            expected to be relative to the tablelist window itself (not its
            body component).</dd>
          </dl>
        </dd>

        <dt class="tm" id="searchcolumn"><code><i>pathName</i>
        <b>searchcolumn</b> <i>columnIndex</i> <i>pattern</i>
        ?<i>options</i>?</code></dt>

        <dd>This subcommand searches the elements of the column given by
        <code><i>columnIndex</i></code> to see if one of them matches
        <code><i>pattern</i></code>.&nbsp; If a match is found, the row index
        of the first matching element is returned as result (unless the option
        <code><b>-all</b></code> is specified).&nbsp; If not, the return value
        is <code>-1</code>.&nbsp; One or more of the following options may be
        specified to control the search:</dd>

        <dd class="tm">
          <table border="0" cellpadding="6" cellspacing="0">
            <tr valign="top">
              <td><code><b>-all</b></code></td>

              <td>Changes the result to be the list of all matching row
              indices, which will be in numeric order (or in reverse numeric
              order when used with the <code><b>-backwards</b></code>
              option).</td>
            </tr>

            <tr valign="top">
              <td><code><b>-backwards</b></code></td>

              <td>The search will proceed backward through the given column's
              elements.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-check</b> <i>command</i></code></td>

              <td>Specifies an additional condition to be fulfilled by the
              matching elements.&nbsp; If an element of the specified column
              matches the given pattern and <i>command</i> is a nonempty
              string, then the latter is automatically concatenated with the
              name of the tablelist widget, the element's row index, the
              numerical equivalent of <code><i>columnIndex</i></code>, as well
              as the element itself or its <a href=
              "#col_formatted">formatted</a> version (depending on the presence
              of the <code><b>-formatted</b></code> option), the resulting
              script is evaluated in the global scope, and the return value
              (which must be a boolean) will determine whether the element in
              question will still be viewed as matching or not.&nbsp; The
              default <i>command</i> is an empty string.&nbsp; This option
              enables you to pass arbitrary additional matching criteria to the
              searching process.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-descend</b></code></td>

              <td>Search the elements of the specified column in all
              descendants of the tree node given by the
              <code><b>-parent</b></code> option.&nbsp; The elements will be
              visited in the order of their row indices (or in reverse order of
              their row indices when used with the
              <code><b>-backwards</b></code> option).&nbsp; The default is to
              restrict the search to the parent node's children only.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-exact</b></code></td>

              <td>The matching element(s) must be identical to the literal
              string <code><i>pattern</i></code>.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-formatted</b></code></td>

              <td>Examine the <a href="#col_formatted">formatted</a> versions
              of the elements rather than the internal cell values.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-glob</b></code></td>

              <td>Treat <code><i>pattern</i></code> as a glob-style pattern and
              match it against the elements using the same rules as the&nbsp;
              <code><b>string match</b></code>&nbsp; command.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-nocase</b></code></td>

              <td>Causes comparisons to be handled in a case-insensitive
              manner.&nbsp; Has no effect if combined with the
              <code><b>-numeric</b></code> option.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-not</b></code></td>

              <td>This option negates the sense of the match, returning the row
              index of the first non-matching element (or, in the presence of
              the <code><b>-all</b></code> option, the list of row indices of
              all non-matching elements) of the given column.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-numeric</b></code></td>

              <td>The elements are to be compared to
              <code><i>pattern</i></code> as integer or floating-point values,
              using the <code><b>==</b></code> comparison operator.&nbsp; This
              option is only meaningful when used with
              <code><b>-exact</b></code>.</td>
            </tr>

            <tr valign="top">
              <td nowrap><code><b>-parent</b>
              <i>nodeIndex</i>&nbsp;&nbsp;</code></td>

              <td>This option restricts the search to the children (or
              descendants, when used with <code><b>-descend</b></code>) of the
              tree node given by <code><i>nodeIndex</i></code>.&nbsp; The
              default parent is <code><b>root</b></code>.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-regexp</b></code></td>

              <td>Treat <code><i>pattern</i></code> as a regular expression and
              match it against the elements using the rules described in the
              <code><b>re_syntax</b></code> reference page.</td>
            </tr>

            <tr valign="top">
              <td><code><b>-start</b> <i>index</i></code></td>

              <td>The elements of the specified column are to be searched
              (forwards or backwards) starting at the row given by
              <code><i>index</i></code>.&nbsp; This option makes it easy to
              provide incremental search.</td>
            </tr>
          </table>
        </dd>

        <dd class="tm">If all matching style options
        <code><b>-exact</b></code>, <code><b>-glob</b></code>, and
        <code><b>-regexp</b></code> are omitted then the matching style
        defaults to <code><b>-glob</b></code>.&nbsp; If more than one of them
        is specified, the last matching style given takes precedence.</dd>

        <dd class="tm">Before examining the children (or descendants, when used
        with the <code><b>-descend</b></code> option) of a row whose children
        have not been inserted yet, the command specified as the value of the
        <code><b><a href="#populatecommand">-populatecommand</a></b></code>
        option (if any) is automatically concatenated with the name of the
        tablelist widget and the row index, and the resulting script is
        evaluated in the global scope.&nbsp; This enables you to insert the
        children on demand, just before searching them for the specified
        pattern.</dd>

        <dt class="tm" id="see"><code><i>pathName</i> <b>see</b>
        <i>index</i></code></dt>

        <dd>Adjusts the view in the tablelist so that the item given by
        <code><i>index</i></code> is visible.&nbsp; If the item is already
        visible then the command has no effect; if the item is near one edge of
        the window then the tablelist scrolls to bring the item into view at
        the edge; otherwise the tablelist scrolls to center the item.</dd>

        <dt class="tm" id="seecell"><code><i>pathName</i> <b>seecell</b>
        <i>cellIndex</i></code></dt>

        <dd>Adjusts the view in the tablelist so that the cell given by
        <code><i>cellIndex</i></code> is visible.&nbsp; If the cell is already
        visible then the command has no effect; if the cell is near one edge of
        the window then the tablelist scrolls to bring the cell into view at
        the edge; otherwise the tablelist scrolls to center the cell.&nbsp; If
        the value of the <code><b><a href=
        "#titlecolumns">-titlecolumns</a></b></code> option is positive then
        the centering of the cell is only done vertically; the horizontal
        scrolling (which in this case is performed column-wise) will just bring
        the cell into view next to the title columns or at the right edge of
        the window.</dd>

        <dt class="tm">id="seecolumn"&gt;<code><i>pathName</i> <b>seecolumn</b>
        <i>columnIndex</i></code></dt>

        <dd>Adjusts the view in the tablelist so that the column given by
        <code><i>columnIndex</i></code> is visible.&nbsp; If the column is
        already visible then the command has no effect; if the column is near
        one edge of the window then the tablelist scrolls horizontally to bring
        the column into view at the edge; otherwise the tablelist scrolls
        horizontally to center the column.&nbsp; If the value of the
        <code><b><a href="#titlecolumns">-titlecolumns</a></b></code> option is
        positive then the horizontal scrolling (which in this case is performed
        column-wise) will just bring the column into view next to the title
        columns or at the right edge of the window.</dd>

        <dt class="tm" id="selection"><code><i>pathName</i> <b>selection</b>
        <i>option</i> <i>args</i></code></dt>

        <dd>This command is used to adjust the selection within a tablelist
        widget.&nbsp; It has several forms, depending on
        <code><i>option</i></code>:</dd>

        <dd>
          <dl>
            <dt class="tm"><code><i>pathName</i> <b>selection</b> <b>anchor</b>
            <i>index</i></code></dt>

            <dd>Sets the selection anchor to the item given by
            <code><i>index</i></code>.&nbsp; If <code><i>index</i></code>
            refers to a nonexistent or non-<a href="#isviewable">viewable</a>
            item, then the closest viewable item is used.&nbsp; The selection
            anchor is the end of the selection that is fixed while dragging out
            a selection with the mouse if the selection type is
            <code><b>row</b></code>.&nbsp; The index <code><b>anchor</b></code>
            may be used to refer to the anchor item.</dd>

            <dt class="tm"><code><i>pathName</i> <b>selection</b> <b>clear</b>
            <i>first</i> <i>last</i></code><br>
            <code><i>pathName</i> <b>selection</b> <b>clear</b>
            <i>indexList</i></code></dt>

            <dd>If any of the items between <code><i>first</i></code> and
            <code><i>last</i></code> (inclusive) or corresponding to the
            indices specified by the list <code><i>indexList</i></code> contain
            at least one selected cell, they are deselected.&nbsp; The
            selection state is not changed for items outside the range given in
            the first form of the command or different from those specified by
            the index list given in its second form.</dd>

            <dt class="tm"><code><i>pathName</i> <b>selection</b>
            <b>includes</b> <i>index</i></code></dt>

            <dd>Returns <code>1</code> if the item indicated by
            <code><i>index</i></code> contains at least one selected cell,
            <code>0</code> if it doesn't.</dd>

            <dt class="tm"><code><i>pathName</i> <b>selection</b> <b>set</b>
            <i>first</i> <i>last</i></code><br>
            <code><i>pathName</i> <b>selection</b> <b>set</b>
            <i>indexList</i></code></dt>

            <dd>Selects all of the selectable items in the range between
            <code><i>first</i></code> and <code><i>last</i></code>, inclusive,
            or corresponding to the indices specified by the list
            <code><i>indexList</i></code>, without affecting the selection
            state of any other items.</dd>
          </dl>
        </dd>

        <dd class="tm">If the tablelist's <code><b><a href=
        "#state">state</a></b></code> is <code><b>disabled</b></code> and
        <code><i>option</i></code> is different from
        <code><b>includes</b></code> then the command just returns an empty
        string, without performing any of the above actions.</dd>

        <dt class="tm" id="separatorpath"><code><i>pathName</i>
        <b>separatorpath</b> ?<i>columnIndex</i>?</code></dt>

        <dd>If the optional argument is not specified, then this command
        returns the path name of the special separator displayed to mark the
        end of the title columns if the value of the <code><b><a href=
        "#titlecolumns">-titlecolumns</a></b></code> option is positive and an
        empty string otherwise.&nbsp; If the optional argument is present, then
        the command returns the path name of the separator attached to the
        right edge of the header label indicated by
        <code><i>columnIndex</i></code> if the value of the <code><b><a href=
        "#showseparators">-showseparators</a></b></code> configuration option
        is true and an empty string otherwise.</dd>

        <dt class="tm" id="separators"><code><i>pathName</i>
        <b>separators</b></code></dt>

        <dd>Returns a list containing the path names of all column
        separators.&nbsp; If the value of the <code><b><a href=
        "#titlecolumns">-titlecolumns</a></b></code> option is positive then
        the first element of the list will be the path name of the special
        separator displayed to mark the end of the title columns.&nbsp; Whether
        the path names of the other separators are included in the list,
        depends on the value of the <code><b><a href=
        "#showseparators">-showseparators</a></b></code> configuration
        option.</dd>

        <dt class="tm" id="size"><code><i>pathName</i> <b>size</b></code></dt>

        <dd>Returns the total number of items in the tablelist widget.</dd>

        <dt class="tm" id="sort"><code><i>pathName</i> <b>sort</b>
        ?<b>-increasing</b>|<b>-decreasing</b>?</code></dt>

        <dd>Sorts the items in increasing or decreasing order, as specified by
        the optional argument.&nbsp; The default is
        <code><b>-increasing</b></code>.&nbsp; Uses the value of the
        <code><b><a href="#sortcommand">-sortcommand</a></b></code> widget
        configuration option as comparison command.&nbsp;
        <code><b>sort</b></code> also removes any existing up- or down-arrows
        displayed by an earlier invocation of <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code>.&nbsp; After
        sorting the items, the command conditionally adjusts the vertical view
        as follows: (a) if interactive cell editing is in progress then the
        cell being edited is brought into view; (b) else, if exactly one item
        is selected then the view is shifted to bring that item into view; (c)
        else, if the tablelist's body is the most recent window to have the
        input focus among all the windows in the same top-level as the widget
        itself then the currently active item is brought into view.</dd>

        <dt class="tm" id="sortbycolumn"><code><i>pathName</i>
        <b>sortbycolumn</b> <i>columnIndex</i>
        ?<b>-increasing</b>|<b>-decreasing</b>?</code></dt>

        <dd>Sorts the items based on the elements of the column given by
        <code><i>columnIndex</i></code>, in increasing or decreasing order, as
        specified by the optional argument.&nbsp; The default is
        <code><b>-increasing</b></code>.&nbsp; The sorting process is
        controlled by the values of the <code><b><a href=
        "#col_sortmode">-sortmode</a></b></code> and <code><b><a href=
        "#col_sortcommand">-sortcommand</a></b></code> options for the given
        column.&nbsp; If both the value of the <code><b><a href=
        "#showarrow">-showarrow</a></b></code> configuration option and that of
        the <code><b><a href="#col_showarrow">-showarrow</a></b></code> option
        for the specified column are true then an up- or down-arrow indicating
        the sort order will be placed into the column's label.&nbsp; The shape
        of the arrow depends on the command's optional argument and on the
        value of the <code><b><a href=
        "#incrarrowtype">-incrarrowtype</a></b></code> configuration
        option.&nbsp; If the label's text is right-aligned then the arrow will
        be displayed on the left side of the label, otherwise on its right
        side.&nbsp; After sorting the items, the vertical view is adjusted in
        the same way as in the case of the <code><b><a href=
        "#sort">sort</a></b></code> subcommand.</dd>

        <dd class="tm">The actions described above are only performed if the
        specified column's <code><b><a href=
        "#col_showlinenumbers">-showlinenumbers</a></b></code> option hasn't
        been set to true.</dd>

        <dt class="tm" id="sortbycolumnlist"><code><i>pathName</i>
        <b>sortbycolumnlist</b> <i>columnIndexList</i>
        ?<i>sortOrderList</i>?</code></dt>

        <dd>Sorts the items based on the elements of the columns given by the
        <code><i>columnIndexList</i></code> argument, which must be a list of
        distinct column indices.&nbsp; Only those elements of this list are
        considered significant that identify columns whose <code><b><a href=
        "#col_showlinenumbers">-showlinenumbers</a></b></code> option hasn't
        been set to true.</dd>

        <dd class="tm">The items are first sorted based on the column specified
        by the last significant element of <code><i>columnIndexList</i></code>,
        then based on the one given by the last but one significant element,
        and so on.&nbsp; The order of each sort operation is taken from the
        optional argument <code><i>sortOrderList</i></code>, whose elements
        must be (abbreviations of) <code><b>increasing</b></code> or
        <code><b>decreasing</b></code>.&nbsp; If this argument was not
        specified or contains less elements than
        <code><i>columnIndexList</i></code> then the missing sort orders are
        assumed to be <code><b>increasing</b></code>.&nbsp; Each sorting
        process is controlled by the values of the <code><b><a href=
        "#col_sortmode">-sortmode</a></b></code> and <code><b><a href=
        "#col_sortcommand">-sortcommand</a></b></code> options for the
        respective column.&nbsp; If the column's index was specified among the
        first 9 significant elements of <code><i>columnIndexList</i></code> and
        both the value of the <code><b><a href=
        "#showarrow">-showarrow</a></b></code> configuration option and that of
        the <code><b><a href="#col_showarrow">-showarrow</a></b></code> option
        for that column are true then an up- or down-arrow indicating the sort
        order will be placed into the column's label.&nbsp; The shape of the
        arrow depends on the respective sort order and on the value of the
        <code><b><a href="#incrarrowtype">-incrarrowtype</a></b></code>
        configuration option.&nbsp; If the label's text is right-aligned then
        the arrow will be displayed on the left side of the label, otherwise on
        its right side.&nbsp; If more than one sort arrows are to be displayed
        then the first 9 sort ranks (<code>1</code> for the first significant
        element of <code><i>columnIndexList</i></code>, <code>2</code> for the
        second one, and so on) will also be shown to the right of the
        arrows.&nbsp; After sorting the items, the vertical view is adjusted in
        the same way as in the case of the <code><b><a href=
        "#sort">sort</a></b></code> subcommand.</dd>

        <dt class="tm" id="sortcolumn"><code><i>pathName</i>
        <b>sortcolumn</b></code></dt>

        <dd>Returns the numerical index of the column by which the items were
        last sorted with the aid of the <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code> or <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> command, or
        <code>-1</code> if they were last sorted with the <code><b><a href=
        "#sort">sort</a></b></code> command or haven't been sorted at all, or
        the sort information was reset by invoking <code><b><a href=
        "#resetsortinfo">resetsortinfo</a></b></code>.&nbsp; If called from
        within the command specified as the value of the
        <code><b>-sortcommand</b></code> <a href="#sortcommand">widget</a> or
        <a href="#col_sortcommand">column</a> configuration option, then the
        return value of this subcommand refers to the sorting in progress
        rather than the most recent one.</dd>

        <dt class="tm" id="sortcolumnlist"><code><i>pathName</i>
        <b>sortcolumnlist</b></code></dt>

        <dd>Returns a list consisting of the numerical indices of the columns
        by which the items were last sorted with the aid of the
        <code><b><a href="#sortbycolumnlist">sortbycolumnlist</a></b></code> or
        <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> command
        (in the second case the list will contain exactly one element), or an
        empty string if they were last sorted with the <code><b><a href=
        "#sort">sort</a></b></code> command or haven't been sorted at all, or
        the sort information was reset by invoking <code><b><a href=
        "#resetsortinfo">resetsortinfo</a></b></code>.&nbsp; If called from
        within the command specified as the value of the
        <code><b>-sortcommand</b></code> <a href="#sortcommand">widget</a> or
        <a href="#col_sortcommand">column</a> configuration option, then the
        return value of this subcommand refers to the sorting in progress
        rather than the most recent one.</dd>

        <dt class="tm" id="sortorder"><code><i>pathName</i>
        <b>sortorder</b></code></dt>

        <dd>Returns the sort order (as <code><b>increasing</b></code> or
        <code><b>decreasing</b></code>) from the last sorting performed by the
        <code><b><a href="#sort">sort</a></b></code>, <code><b><a href=
        "#sortbycolumn">sortbycolumn</a></b></code>, or <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> command, or an
        empty string if the items haven't been sorted at all, or the sort
        information was reset by invoking <code><b><a href=
        "#resetsortinfo">resetsortinfo</a></b></code>.&nbsp; If called from
        within the command specified as the value of the
        <code><b>-sortcommand</b></code> <a href="#sortcommand">widget</a> or
        <a href="#col_sortcommand">column</a> configuration option, then the
        return value of this subcommand refers to the sorting in progress
        rather than the most recent one.</dd>

        <dt class="tm" id="sortorderlist"><code><i>pathName</i>
        <b>sortorderlist</b></code></dt>

        <dd>Returns a list consisting of the sort orders (as
        <code><b>increasing</b></code> or <code><b>decreasing</b></code>) from
        the last invocation of the <code><b><a href=
        "#sortbycolumnlist">sortbycolumnlist</a></b></code> or
        <code><b><a href="#sortbycolumn">sortbycolumn</a></b></code> command
        (in the second case the list will contain exactly one element), or an
        empty string if the items were last sorted with the <code><b><a href=
        "#sort">sort</a></b></code> command or haven't been sorted at all, or
        the sort information was reset by invoking <code><b><a href=
        "#resetsortinfo">resetsortinfo</a></b></code>.&nbsp; If called from
        within the command specified as the value of the
        <code><b>-sortcommand</b></code> <a href="#sortcommand">widget</a> or
        <a href="#col_sortcommand">column</a> configuration option, then the
        return value of this subcommand refers to the sorting in progress
        rather than the most recent one.</dd>

        <dt class="tm" id="togglecolumnhide"><code><i>pathName</i>
        <b>togglecolumnhide</b> <i>firstColumn</i> <i>lastColumn</i></code><br>
        <code><i>pathName</i> <b>togglecolumnhide</b>
        <i>columnIndexList</i></code></dt>

        <dd>Toggles the value of the <code><b><a href=
        "#col_hide">-hide</a></b></code> option for one or more columns of the
        tablelist widget.&nbsp; In the first form of the command,
        <code><i>firstColumn</i></code> and <code><i>lastColumn</i></code> are
        indices specifying the first and last columns in the range whose
        visibility is to be toggled.&nbsp; The command's second form accepts a
        list <code><i>columnIndexList</i></code> of indices specifying the
        columns whose visibility is to be toggled.&nbsp; Returns an empty
        string.&nbsp; After toggling the hidden state of the specified columns,
        the <code><b>&lt;&lt;TablelistColHiddenStateChanged&gt;&gt;</b></code>
        virtual event is generated.&nbsp; For Tk versions 8.5 or higher, this
        virtual event is generated with its <code><b>-data</b></code> option
        set to a list consisting of the numerical column indices of the columns
        whose <code><b>-hide</b></code> option was toggled.&nbsp; The main
        advantage of using this command instead of invoking <code><b><a href=
        "#columnconfigure">columnconfigure</a></b></code> for each of the
        specified columns is that it causes only one redisplay of the widget's
        contents, thus being significantly faster.</dd>

        <dt class="tm" id="togglerowhide"><code><i>pathName</i>
        <b>togglerowhide</b> <i>first</i> <i>last</i></code><br>
        <code><i>pathName</i> <b>togglerowhide</b> <i>indexList</i></code></dt>

        <dd>Toggles the value of the <code><b><a href=
        "#row_hide">-hide</a></b></code> option for one or more rows of the
        tablelist widget.&nbsp; In the first form of the command,
        <code><i>first</i></code> and <code><i>last</i></code> are indices
        specifying the first and last rows in the range whose visibility is to
        be toggled.&nbsp; The command's second form accepts a list
        <code><i>indexList</i></code> of indices specifying the rows whose
        visibility is to be toggled.&nbsp; Returns an empty string.&nbsp; After
        toggling the hidden state of the specified rows, the
        <code><b>&lt;&lt;TablelistRowHiddenStateChanged&gt;&gt;</b></code>
        virtual event is generated.&nbsp; For Tk versions 8.5 or higher, this
        virtual event is generated with its <code><b>-data</b></code> option
        set to a list consisting of the numerical row indices of the rows whose
        <code><b>-hide</b></code> option was toggled.&nbsp; Just like the
        <code><b>-hide</b></code> row configuration option, this subcommand is
        not supported for Tk versions earlier than 8.3.</dd>

        <dd class="tm"><b>CAUTION:</b>&nbsp; Tk versions 8.3 - 8.4.12 had a bug
        that caused a segmentation fault if the whole content of a text widget
        was elided.&nbsp; This bug was also present in Tk 8.5.a1 -
        8.5.a3.&nbsp; When using one of these earlier Tk versions, this bug
        will produce a crash if all the rows of a tablelist widget are
        hidden.&nbsp; It is your responsibility to avoid such situations when
        using a Tk version having this bug!</dd>

        <dt class="tm" id="toplevelkey"><code><i>pathName</i>
        <b>toplevelkey</b> <i>index</i></code></dt>

        <dd>If the item identified by <code><i>index</i></code> is a top-level
        one then the subcommand returns the full key of that item.&nbsp;
        Otherwise the return value is the full key of the unique top-level item
        having the given item among its descendants.</dd>

        <dt class="tm" id="unsetattrib"><code><i>pathName</i>
        <b>unsetattrib</b> <i>name</i></code></dt>

        <dd>Unsets the attribute <code><i>name</i></code>.&nbsp; Returns an
        empty string.</dd>

        <dt class="tm" id="unsetcellattrib"><code><i>pathName</i>
        <b>unsetcellattrib</b> <i>cellIndex</i> <i>name</i></code></dt>

        <dd>Unsets the attribute <code><i>name</i></code> for the cell given by
        <code><i>cellIndex</i></code>.&nbsp; Returns an empty string.</dd>

        <dt class="tm" id="unsetcolumnattrib"><code><i>pathName</i>
        <b>unsetcolumnattrib</b> <i>columnIndex</i> <i>name</i></code></dt>

        <dd>Unsets the attribute <code><i>name</i></code> for the column given
        by <code><i>columnIndex</i></code>.&nbsp; Returns an empty string.</dd>

        <dt class="tm" id="unsetrowattrib"><code><i>pathName</i>
        <b>unsetrowattrib</b> <i>index</i> <i>name</i></code></dt>

        <dd>Unsets the attribute <code><i>name</i></code> for the row given by
        <code><i>index</i></code>.&nbsp; Returns an empty string.</dd>

        <dt class="tm" id="viewablerowcount"><code><i>pathName</i>
        <b>viewablerowcount</b> ?<i>first</i> <i>last</i>?</code></dt>

        <dd>Returns the number of <a href="#isviewable">viewable</a> rows in
        the index range given by <code><i>first</i></code> and
        <code><i>last</i></code>.&nbsp; If these optional indices are not
        specified then <code><i>first</i></code> defaults to <code>0</code> and
        <code><i>last</i></code> defaults to one less the total number of
        items, i.e., the index range comprises all rows.</dd>

        <dt class="tm" id="windowpath"><code><i>pathName</i> <b>windowpath</b>
        <i>cellIndex</i></code></dt>

        <dd>Returns the path name of the window contained in the cell given by
        <code><i>cellIndex</i></code>, created with the <code><b><a href=
        "#cell_window">-window</a></b></code> option of the <code><b><a href=
        "#cellconfigure">cellconfigure</a></b></code> subcommand.&nbsp; If no
        window is currently embedded into the cell then the return value is an
        empty string.</dd>

        <dt class="tm" id="xview"><code><i>pathName</i> <b>xview</b>
        <i>args</i></code></dt>

        <dd>This command is used to query and change the horizontal position of
        the information in the widget's window.&nbsp; It can take any of the
        following forms:</dd>

        <dd>
          <dl>
            <dt class="tm"><code><i>pathName</i> <b>xview</b></code></dt>

            <dd>Returns a list containing two elements.&nbsp; Each element is a
            real fraction between <code>0</code> and <code>1</code>; together
            they describe the horizontal span that is visible in the
            window.&nbsp; For example, if the first element is <code>.2</code>
            and the second element is <code>.6</code>, 20% of the tablelist's
            scrollable text is off-screen to the left, the middle 40% is
            visible in the window, and 40% of the scrollable text is off-screen
            to the right.&nbsp; These are the same values passed to scrollbars
            via the <code><b>-xscrollcommand</b></code> option.</dd>

            <dt class="tm"><code><i>pathName</i> <b>xview</b>
            <i>units</i></code></dt>

            <dd>If the value of the <code><b><a href=
            "#titlecolumns">-titlecolumns</a></b></code> option is positive
            then this command adjusts the view in the window so that the column
            whose offset from the end of the title column area equals
            <code><i>units</i></code> non-hidden columns is displayed next to
            the title columns.&nbsp; Otherwise the command adjusts the view in
            the window so that the character position given by
            <code><i>units</i></code> is displayed at the left edge of the
            window.&nbsp; Character positions are defined by the width of the
            character <code><b>0</b></code>.</dd>

            <dt class="tm"><code><i>pathName</i> <b>xview</b> <b>moveto</b>
            <i>fraction</i></code></dt>

            <dd>Adjusts the view in the window so that
            <code><i>fraction</i></code> of the total width of the scrollable
            tablelist text is off-screen to the left.&nbsp;
            <code><i>fraction</i></code> must be a fraction between
            <code>0</code> and <code>1</code>.</dd>

            <dt class="tm"><code><i>pathName</i> <b>xview</b> <b>scroll</b>
            <i>number</i> <i>what</i></code></dt>

            <dd>This command shifts the view in the window left or right
            according to <code><i>number</i></code> and
            <code><i>what</i></code>.&nbsp; <code><i>number</i></code> must be
            an integer.&nbsp; <code><i>what</i></code> must be either
            <code><b>units</b></code> or <code><b>pages</b></code> or an
            abbreviation of one of these.&nbsp; If <code><i>what</i></code> is
            <code><b>units</b></code>, the view adjusts left or right by
            <code><i>number</i></code> non-hidden columns or character units
            (the width of the <code><b>0</b></code> character) on the display,
            depending on the value of the <code><b><a href=
            "#titlecolumns">-titlecolumns</a></b></code> option; if
            <code><i>what</i></code> is <code><b>pages</b></code> then the view
            adjusts by <code><i>number</i></code> screenfuls.&nbsp; If
            <code><i>number</i></code> is negative then columns or characters
            farther to the left become visible; if it is positive then columns
            or characters farther to the right become visible.</dd>
          </dl>
        </dd>

        <dt class="tm" id="yview"><code><i>pathName</i> <b>yview</b>
        <i>args</i></code></dt>

        <dd>This command is used to query and change the vertical position of
        the text in the window of the widget's body component.&nbsp; It can
        take any of the following forms:</dd>

        <dd>
          <dl>
            <dt class="tm"><code><i>pathName</i> <b>yview</b></code></dt>

            <dd>Returns a list containing two elements, both of which are real
            fractions between <code>0</code> and <code>1</code>.&nbsp; The
            first element gives the position of the <a href=
            "#isviewable">viewable</a> tablelist item at the top of the window,
            relative to the tablelist as a whole (<code>0.5</code> means it is
            halfway through the tablelist, for example).&nbsp; The second
            element gives the position of the viewable tablelist item just
            after the last one in the window, relative to the tablelist as a
            whole.&nbsp; These are the same values passed to scrollbars via the
            <code><b>-yscrollcommand</b></code> option.</dd>

            <dt class="tm"><code><i>pathName</i> <b>yview</b>
            <i>units</i></code></dt>

            <dd>Adjusts the view in the window so that the item whose offset
            equals <code><i>units</i></code> <a href="#isviewable">viewable</a>
            rows is displayed at the top of the window.</dd>

            <dt class="tm"><code><i>pathName</i> <b>yview</b> <b>moveto</b>
            <i>fraction</i></code></dt>

            <dd>Adjusts the view in the window so that the <a href=
            "#isviewable">viewable</a> item given by
            <code><i>fraction</i></code> appears at the top of the
            window.&nbsp; <code><i>fraction</i></code> is a fraction between
            <code>0</code> and <code>1</code>; <code>0</code> indicates the
            first viewable item in the tablelist, <code>0.33</code> indicates
            the viewable item one-third the way through the tablelist, and so
            on.</dd>

            <dt class="tm"><code><i>pathName</i> <b>yview</b> <b>scroll</b>
            <i>number</i> <i>what</i></code></dt>

            <dd>This command shifts the view in the window up or down according
            to <code><i>number</i></code> and <code><i>what</i></code>.&nbsp;
            <code><i>number</i></code> must be an integer.&nbsp;
            <code><i>what</i></code> must be either <code><b>units</b></code>
            or <code><b>pages</b></code> or an abbreviation of one of
            these.&nbsp; If <code><i>what</i></code> is
            <code><b>units</b></code>, the view adjusts up or down by
            <code><i>number</i></code> <a href="#isviewable">viewable</a> rows;
            if it is <code><b>pages</b></code> then the view adjusts by
            <code><i>number</i></code> screenfuls.&nbsp; If
            <code><i>number</i></code> is negative then earlier items become
            visible; if it is positive then later items become visible.</dd>
          </dl>
        </dd>
      </dl>
    </dd>

    <dt class="tm" id="body_bindings"><b>DEFAULT AND INDIVIDUAL BINDINGS FOR
    THE TABLELIST BODY</b></dt>

    <dd>
      The body component of a tablelist is implemented as a text widget whose
      binding tag <code><b>Text</b></code> is replaced with a new binding tag
      called <code><b>TablelistBody</b></code>.&nbsp; The latter has all the
      events of the <code><b>Listbox</b></code> widget class, and several of
      its binding scripts are obtained from those of
      <code><b>Listbox</b></code> by replacing the event fields
      <code><b>%W</b></code>, <code><b>%x</b></code>, and
      <code><b>%y</b></code> with the path name of the tablelist widget and the
      x and y coordinates relative to the latter.&nbsp; These values are
      assigned to the help variables <code><b>tablelist::W</b></code>,
      <code><b>tablelist::x</b></code>, and <code><b>tablelist::y</b></code> by
      invoking the helper command <code><b><a href=
      "tablelistBinding.html#convEventFields">tablelist::convEventFields</a></b></code>
      as follows:

      <blockquote>
        <pre>
foreach {tablelist::W tablelist::x tablelist::y} \
    [tablelist::convEventFields %W %x %y] {}
</pre>
      </blockquote>
    </dd>

    <dd>This conversion of the event fields is necessary because the Tcl
    command associated with a tablelist expects any coordinates relative to the
    widget itself, not its body component.&nbsp; It makes use of help variables
    from the <code><b>tablelist</b></code> namespace in order to avoid any
    conflicts with global variables.</dd>

    <dd class="tm">
      Several of the events have no <code><b>%x</b></code> and
      <code><b>%y</b></code> fields; in this case another helper command
      <code><b><a href=
      "tablelistBinding.html#getTablelistPath">tablelist::getTablelistPath</a></b></code>
      is used to set the help variable <code><b>tablelist::W</b></code> to the
      path name of the tablelist widget:

      <blockquote>
        <pre>
set tablelist::W [tablelist::getTablelistPath %W]
</pre>
      </blockquote>
    </dd>

    <dd>The binding tag <code><b>TablelistBody</b></code> replaces the class
    name (<code><b>Frame</b></code> or <code><b>TSeparator</b></code>) of the
    separator widgets, too.&nbsp; It also replaces the binding tag
    <code><b>Message</b></code> of the message widgets used to display
    multi-line elements, as well as the binding tag <code><b>Label</b></code>
    of the label widgets used to display embedded images.&nbsp; This makes sure
    that the default handling of the mouse events on the column separators,
    multi-line cells, and embedded images is the same as in the rest of the
    tablelist's body.</dd>

    <dd class="tm">
      When defining individual bindings for tablelist widgets, the same
      conversion of the event fields is needed as for the default
      bindings.&nbsp; For example, the binding script below for the tablelist
      widget <code>.tbl</code> prints the index of the cell where mouse button
      1 was clicked:

      <blockquote>
        <pre>
bind [.tbl bodytag] &lt;Button-1&gt; {
    foreach {tablelist::W tablelist::x tablelist::y} \
        [tablelist::convEventFields %W %x %y] {}
    puts "clicked on cell [.tbl containingcell $tablelist::x $tablelist::y]"
}
</pre>
      </blockquote>
    </dd>

    <dd>By associating the script with the binding tag returned by the
    <code><b><a href="#bodytag">bodytag</a></b></code> subcommand instead of
    just with the path name of the tablelist's body we make sure to have the
    same event handling for the separators, multi-line cells, and embedded
    images as for the rest of the tablelist's body.</dd>

    <dd class="tm">
      The following improved version of the binding script above uses a
      procedure and thus eliminates the need for prefixing the converted
      variables with <code>"tablelist::"</code>:

      <blockquote>
        <pre>
bind [.tbl bodytag] &lt;Button-1&gt; {printClickedCell %W %x %y}<br>
proc printClickedCell {w x y} {
    foreach {tbl x y} [tablelist::convEventFields $w $x $y] {}
    puts "clicked on cell [$tbl containingcell $x $y]"
}
</pre>
      </blockquote>
    </dd>

    <dd>The bindings associated with the binding tag
    <code><b>TablelistBody</b></code>, created automatically by the
    <code><b>tablelist::tablelist</b></code> command, ensure that the body
    component of a tablelist has the same default behavior as a listbox
    widget.&nbsp; If the selection type is <code><b>row</b></code> (which is
    the default) then everything described in the "DEFAULT BINDINGS" section of
    the <b>listbox</b> manual entry applies to the body component of a
    tablelist, too.&nbsp; The only difference is that the word "element" in
    that manual page has to be replaced with "item" when applying the
    description to the body of a tablelist widget.</dd>

    <dd class="tm">If the selection type is <code><b>cell</b></code> then
    everything described in the "DEFAULT BINDINGS" section of the
    <b>listbox</b> manual entry applies to the body component of a tablelist,
    too, with the following extensions and changes:</dd>

    <dd>
      <ol>
        <li class="tm">If <code>Tab</code> or <code>Shift-Tab</code> is
        pressed, the location cursor (active element) moves to the
        next/previous element.&nbsp; If the selection mode is
        <code><b>browse</b></code> or <code><b>extended</b></code> then the new
        active element is also selected and all other elements are
        deselected.&nbsp; In <code><b>extended</b></code> mode the new active
        element becomes the selection anchor.&nbsp; Notice that these bindings
        replace the common inter-widget navigation via <code>Tab</code> and
        <code>Shift-Tab</code> with inter-cell navigation.&nbsp; Just like in
        the case of the text widget, <code>Control-Tab</code> and
        <code>Control-Shift-Tab</code> are intended to be used for
        widget-to-widget keyboard navigation.&nbsp; Unfortunately, this won't
        always work because some window managers intercept the latter key
        sequences and use them for their own purposes (like inter-workplace
        navigation).&nbsp; For this reason, Tablelist supports the additional
        key sequences <code>Meta-Tab</code> and <code>Meta-Shift-Tab</code> as
        replacements for <code>Control-Tab</code> and
        <code>Control-Shift-Tab</code>, respectively.</li>

        <li class="tm">If the <code>Left</code> or <code>Right</code> key is
        pressed, the location cursor (active element) moves to the
        previous/next element of the active row.&nbsp; If the selection mode is
        <code><b>browse</b></code> or <code><b>extended</b></code> then the new
        active element is also selected and all other elements are
        deselected.&nbsp; In <code><b>extended</b></code> mode the new active
        element becomes the selection anchor.</li>

        <li class="tm">In <code><b>extended</b></code> mode,
        <code>Shift-Left</code> and <code>Shift-Right</code> move the location
        cursor (active element) to the previous/next element of the active row
        and also extend the selection to that element in a fashion similar to
        dragging with mouse button 1.</li>

        <li class="tm">If the <code>Home</code> or <code>End</code> key is
        pressed, the location cursor (active element) moves to the first/last
        element of the active row, the new active element is selected, and all
        other elements are deselected.</li>

        <li class="tm">In <code><b>extended</b></code> mode,
        <code>Shift-Home</code> and <code>Shift-End</code> extend the selection
        to the first/last element of the active row.&nbsp; In
        <code><b>multiple</b></code> mode, <code>Shift-Home</code> and
        <code>Shift-End</code> move the location cursor to the first/last
        element of the active row.</li>

        <li class="tm">If the location cursor is in an editable cell then
        <code>Return</code> and <code>KP_Enter</code> start the interactive
        editing of the active element.</li>
      </ol>
    </dd>

    <dd class="tm">Just like in the case of the listbox widget, any changes to
    the selection will automatically generate the virtual event
    <code><b>&lt;&lt;ListboxSelect&gt;&gt;</b></code>.&nbsp; Instead of this
    event (which is supported for compatibility reasons), the virtual event
    <code><b>&lt;&lt;TablelistSelect&gt;&gt;</b></code> can be used to be made
    aware of any changes to tablelist selection.&nbsp; Both events will be
    generated independently of the selection type.</dd>

    <dd class="tm" id="drag_and_drop">
      The following binding associated with the binding tag
      <code><b>TablelistBody</b></code> is only valid if the selection mode is
      <code><b>single</b></code> or <code><b>multiple</b></code>:

      <blockquote>
        <p>If mouse button 1 is clicked on an item and then dragged outside
        that item, and the value of the <code><b><a href=
        "#movablerows">-movablerows</a></b></code> configuration option is
        true, then the mouse cursor takes on the shape specified by the
        <code><b><a href="#movecursor">-movecursor</a></b></code> option,
        indicating that the item in question is being moved to another
        position.&nbsp; The new item position (if any) is visualized with the
        aid of a gap placed before the target row or a bar placed inside the
        latter (depending on the current mouse position), indicating whether
        the source item would be moved before this row or become a child of
        it.&nbsp; This <b>local drag &amp; drop</b> operation ends when mouse
        button 1 is released, and can be canceled by pressing the
        <code>Escape</code> key.&nbsp; In both cases, the mouse cursor is reset
        to its original value, specified by the <code><b>-cursor</b></code>
        configuration option.&nbsp; After releasing mouse button 1 in the
        presence of a valid target, the source item is moved before the target
        row or just before the latter's first child, and the virtual event
        <code><b>&lt;&lt;TablelistRowMoved&gt;&gt;</b></code> is
        generated.&nbsp; For Tk versions 8.5 or higher, this virtual event is
        is generated with its <code><b>-data</b></code> option set to a list of
        length 3, whose elements are derived from the arguments passed to the
        second form of the <code><b><a href="#move">move</a></b></code>
        subcommand invoked for moving the source row to its new position.&nbsp;
        The first list element will be the full key corresponding to the first
        argument, the second one will be <code><b>root</b></code> or the full
        key corresponding to the second argument, and the third list element
        will be identical to the third argument passed to the
        <code><b>move</b></code> subcommand.</p>

        <p>Notice that, depending on the current mouse position during the
        local drag &amp; drop, there can be a corresponding potential target
        row or not.&nbsp; For instance, a tree item cannot become a sibling of
        one of its descendants, and not all items might be allowed to have
        children or to become top-level ones (example: in a file manager,
        regular file items cannot be parents of other items and should not be
        allowed to become top-level ones).&nbsp; To decide whether the row
        corresponding to the y-coordinate of the current mouse position
        represents a valid potential target, the Tablelist code first checks
        whether moving the source item before that row or making it a child of
        the latter is allowed from the point of view of the general tree
        structure.&nbsp; If this is the case and the move operation would
        change the source item's parent (and the Tk version is at least 8.3),
        and the command specified as the value of the <code><b><a href=
        "#acceptchildcommand">-acceptchildcommand</a></b></code> configuration
        option is a nonempty string, then this command is concatenated with the
        name of the tablelist widget, the node index of the would-be new parent
        node, and the row index of the dragged item, the resulting script is
        evaluated in the global scope, and if the return value (which must be a
        boolean) is false, then the source item will not be allowed to be moved
        to the current mouse position.&nbsp; Likewise, if the command specified
        as the value of the <code><b><a href=
        "#acceptdropcommand">-acceptdropcommand</a></b></code> configuration
        option is a nonempty string, then this command is concatenated with the
        name of the tablelist widget, the row index of the would-be new target
        row, and the row index of the dragged item, the resulting script is
        evaluated in the global scope, and if the return value (which must be a
        boolean) is false, then the source item will not be allowed to be moved
        to the current mouse position.</p>
      </blockquote>
    </dd>

    <dd>Finally, the following bindings associated with the binding tag
    <code><b>TablelistBody</b></code> apply to tablelists used as tree
    widgets:</dd>

    <dd>
      <ol>
        <li class="tm">Pressing mouse button 1 over an expand/collapse control
        toggles the expanded/collapsed state of the corresponding row.</li>

        <li class="tm">If the current active row contains an expand/collapse
        control in collapsed state then the <code>Right</code>,
        <code>plus</code>, and <code>KP_Add</code> keys expand the
        corresponding row by invoking the non-recursive version of the
        <code><b><a href="#expand">expand</a></b></code> subcommand.</li>

        <li class="tm">If the current active row contains an expand/collapse
        control in expanded state then the <code>Left</code>,
        <code>minus</code>, and <code>KP_Subtract</code> keys collapse the
        corresponding row by invoking the non-recursive version of the
        <code><b><a href="#collapse">collapse</a></b></code> subcommand.</li>
      </ol>
    </dd>

    <dt class="tm" id="label_bindings"><b>DEFAULT AND INDIVIDUAL BINDINGS FOR
    THE HEADER LABELS</b></dt>

    <dd>The <code><b>tablelist::tablelist</b></code> command automatically
    creates the following bindings for the header labels:</dd>

    <dd>
      <ol>
        <li class="tm">If the mouse pointer is on the right edge of a header
        label or within a few pixels of its right edge, and both the value of
        the <code><b><a href=
        "#resizablecolumns">-resizablecolumns</a></b></code> configuration
        option and that of the <code><b><a href=
        "#col_resizable">-resizable</a></b></code> option for the column
        corresponding to that label are true, then the mouse cursor takes on
        the shape specified by the <code><b><a href=
        "#resizecursor">-resizecursor</a></b></code> option.&nbsp; By clicking
        mouse button 1 in this area and moving the mouse while its button 1 is
        down, the column corresponding to that label will be resized by the
        amount of the cursor motion.&nbsp; The interactive column resizing ends
        when mouse button 1 is released, and can be canceled by pressing the
        <code>Escape</code> key.&nbsp; In both cases, the mouse cursor is reset
        to its original value, specified by the <code><b>-cursor</b></code>
        configuration option.&nbsp; When the column resize operation is
        finished, the virtual event
        <code><b>&lt;&lt;TablelistColumnResized&gt;&gt;</b></code> is
        generated, with its <code><b>-data</b></code> option set to the
        numerical column index for Tk versions 8.5 or higher.</li>

        <li class="tm">If mouse button 1 is pressed over a header label but
        outside the resize area described above and then dragged outside the
        label, and the value of the <code><b><a href=
        "#movablecolumns">-movablecolumns</a></b></code> configuration option
        is true, then the mouse cursor takes on the shape specified by the
        <code><b><a href="#movecolumncursor">-movecolumncursor</a></b></code>
        option, indicating that the column in question is being moved to
        another position, visualized with the aid of a gap placed before the
        label of the target column.&nbsp; This operation ends when mouse button
        1 is released, and can be canceled by pressing the <code>Escape</code>
        key when the mouse pointer is outside the label.&nbsp; In both cases,
        the mouse cursor is reset to its original value, specified by the
        <code><b>-cursor</b></code> configuration option.&nbsp; After releasing
        mouse button 1, the source column is moved before the one indicated by
        the gap mentioned above and the virtual event
        <code><b>&lt;&lt;TablelistColumnMoved&gt;&gt;</b></code> is
        generated.&nbsp; For Tk versions 8.5 or higher, this virtual event is
        generated with its <code><b>-data</b></code> option set to a list of
        length 4, whose first two elements are identical to the two numerical
        column indices passed to the <code><b><a href=
        "#movecolumn">movecolumn</a></b></code> subcommand invoked for moving
        the source column to its new position, and the last two elements are
        the corresponding column names, retrieved with the aid of the&nbsp;
        <code><b><a href="#columncget">columncget</a> ...
        -name</b></code>&nbsp; subcommand.</li>

        <li class="tm">If mouse button 1 is pressed over a header label but
        outside the resize area described above and later released over the
        same label, and the command specified by the <code><b><a href=
        "#labelcommand">-labelcommand</a></b></code> option is a nonempty
        string, then this command is concatenated with the name of the
        tablelist widget and the column index of the respective label, and the
        resulting script is evaluated in the global scope.&nbsp; If another
        nonempty label command was specified at column level by using the
        <code><b><a href="#columnconfigure">columnconfigure</a></b></code>
        option of the Tcl command associated with the tablelist widget, then
        that column-specific command will be used instead of the global
        one.&nbsp; If mouse button 1 was pressed together with the
        <code>Shift</code> key then the widget- or column-specific command
        mentioned above will be replaced with the one specified by the
        <code><b><a href="#labelcommand2">-labelcommand2</a></b></code> option
        at widget or column level.</li>

        <li class="tm" id="button3">The Tablelist package defines the virtual
        event <code><b>&lt;&lt;Button3&gt;&gt;</b></code> as
        <code><b>&lt;Button-3&gt;</b></code> for all windowing systems and
        additionally as <code><b>&lt;Control-Button-1&gt;</b></code> for Mac OS
        Classic and Mac OS X Aqua.&nbsp; If this event occurs over a header
        label and both the value of the <code><b><a href=
        "#resizablecolumns">-resizablecolumns</a></b></code> configuration
        option and that of the <code><b><a href=
        "#col_resizable">-resizable</a></b></code> option for the column
        corresponding to that label are true, then the width of that column is
        set to zero, i.e., it is made just large enough to hold all the
        elements in the column, including the header (but no larger than the
        maximum width indicated by the <code><b><a href=
        "#col_maxwidth">-maxwidth</a></b></code> column configuration option),
        and the virtual event
        <code><b>&lt;&lt;TablelistColumnResized&gt;&gt;</b></code> is
        generated, with its <code><b>-data</b></code> option set to the
        numerical column index for Tk versions 8.5 or higher.&nbsp; The same
        action is triggered by double-clicking the resize area of a header
        label.</li>

        <li class="tm">The Tablelist package defines the virtual event
        <code><b>&lt;&lt;ShiftButton3&gt;&gt;</b></code> as
        <code><b>&lt;Shift-Button-3&gt;</b></code> for all windowing systems
        and additionally as <code><b>&lt;Shift-Control-Button-1&gt;</b></code>
        for Mac OS Classic and Mac OS X Aqua.&nbsp; If this event occurs over a
        header label and both the value of the <code><b><a href=
        "#resizablecolumns">-resizablecolumns</a></b></code> configuration
        option and that of the <code><b><a href=
        "#col_resizable">-resizable</a></b></code> option for the column
        corresponding to that label are true, then the width of that column is
        set to its last static width (if any) and the virtual event
        <code><b>&lt;&lt;TablelistColumnResized&gt;&gt;</b></code> is
        generated, with its <code><b>-data</b></code> option set to the
        numerical column index for Tk versions 8.5 or higher.&nbsp; The same
        action is triggered by double-clicking the resize area of a header
        label with the <code>Shift</code> key held down.</li>
      </ol>
    </dd>

    <dd class="tm">If the tablelist's <code><b><a href=
    "#state">state</a></b></code> is <code><b>disabled</b></code> then none of
    the above actions occur: the labels are completely insensitive.</dd>

    <dd class="tm">
      If you want to define non-default bindings for the header labels, it is
      recommended to associate them with the binding tag whose name is returned
      by the <code><b><a href="#labeltag">labeltag</a></b></code> subcommand
      and make use of the helper commands <code><b><a href=
      "tablelistBinding.html#getTablelistColumn">tablelist::getTablelistColumn</a></b></code>
      and <code><b><a href=
      "tablelistBinding.html#getTablelistPath">tablelist::getTablelistPath</a></b></code>.&nbsp;
      For example, to replace the default binding for
      <code><b>&lt;Button-3&gt;</b></code> with a script that performs a
      column-dependent action, you can proceed like in the code shown below:

      <blockquote>
        <pre>
bind [.tbl labeltag] &lt;Button-3&gt; {
    puts "right-clicked on header label no. [tablelist::getTablelistColumn %W]"
    break
}
</pre>
      </blockquote>
    </dd>

    <dt id="edit_bindings"><b>DEFAULT BINDINGS FOR INTERACTIVE CELL
    EDITING</b></dt>

    <dd>The <code><b>tablelist::tablelist</b></code> command extends and
    partially redefines the bindings of some of the components of the temporary
    embedded widget used for interactive cell editing, which is started by
    pressing mouse button 1 in an editable cell (see the <code><b><a href=
    "#editselectedonly">-editselectedonly</a></b></code> option for details) or
    using keyboard navigation to move from one editable cell into
    another.&nbsp; If the selection type is <code><b>cell</b></code> and the
    location cursor is in an editable cell, then the interactive editing of the
    active element can also be started by pressing <code>Return</code> or
    <code>KP_Enter</code>.</dd>

    <dd class="tm">The affected components of the temporary embedded widget
    depend on the edit window: the widget itself in case of a Tk or tile
    checkbutton or menubutton; the edit window's entry children in case of a
    mentry widget; the only entry or entry-like component of the edit window in
    all other cases (see also the <code><b><a href=
    "#entrypath">entrypath</a></b></code> subcommand).&nbsp; The list of
    binding tags of these edit window components contains two addditional tags,
    inserted just before their path names: the binding tag whose name is
    returned by the <code><b><a href="#editwintag">editwintag</a></b></code>
    subcommand, followed by the tag <code><b>TablelistEdit</b></code>.&nbsp;
    The bindings described below are associated with the tag
    <code><b>TablelistEdit</b></code>, and can be overridden for individual
    tablelist widgets by making use of the binding tag given by the
    <code><b><a href="#editwintag">editwintag</a></b></code> subcommand.</dd>

    <dd>
      <ol>
        <li class="tm"><code>Control-i</code> inserts a tabulator character
        into the edit window's entry or entry-like components (if any), at the
        point of the insertion cursor.</li>

        <li class="tm"><code>Control-j</code> inserts a newline character into
        the edit window's entry or entry-like components (if any), at the point
        of the insertion cursor.</li>

        <li class="tm">If the edit window is a text or ctext widget then
        <code>Return</code> and <code>KP_Enter</code> insert a newline
        character at the point of the insertion cursor.&nbsp; Otherwise they
        terminate the editing and destroy the edit window.</li>

        <li class="tm"><code>Control-Return</code> and
        <code>Control-KP_Enter</code> terminate the editing and destroy the
        edit window.</li>

        <li class="tm"><code>Escape</code> aborts the editing and destroys the
        edit window.</li>

        <li class="tm">A click with the left mouse button anywhere in the
        tablelist's body, outside the cell just being edited, terminates the
        editing in the current cell and destroys the edit window or moves it
        into the cell that was just clicked into if the latter is
        editable.</li>

        <li class="tm">When editing a cell that is not the only editable cell
        of the tablelist widget, <code>Tab</code> and <code>Shift-Tab</code>
        terminate the editing in the current cell, move the edit window into
        the next/previous editable cell of the tablelist, select the contents
        of the edit window's first entry or entry-like component (if any), and
        set the insertion cursor to its end.&nbsp; If the new edit window is a
        text or ctext widget then its contents are left unselected.&nbsp;
        Notice that these bindings replace the common inter-widget navigation
        via <code>Tab</code> and <code>Shift-Tab</code> with inter-cell
        navigation.&nbsp; Just like in the case of the text widget,
        <code>Control-Tab</code> and <code>Control-Shift-Tab</code> are
        intended to be used for widget-to-widget keyboard navigation during
        interactive cell editing.&nbsp; Unfortunately, this won't always work
        because some window managers intercept the latter key sequences and use
        them for their own purposes (like inter-workplace navigation).&nbsp;
        For this reason, Tablelist supports the additional key sequences
        <code>Meta-Tab</code> and <code>Meta-Shift-Tab</code> as replacements
        for <code>Control-Tab</code> and <code>Control-Shift-Tab</code>,
        respectively.</li>

        <li class="tm">When editing a cell that is not the first/last editable
        cell within its row, <code>Alt-Left</code>/<code>Alt-Right</code>
        (<code>Command-Left</code>/<code>Command-Right</code> on Mac OS Classic
        and Mac OS X Aqua) terminates the editing in the current cell, moves
        the edit window into the previous/next editable cell of the row,
        selects the contents of the edit window's first entry or entry-like
        component (if any), and sets the insertion cursor to its end.&nbsp; If
        the new edit window is a text or ctext widget then its contents are
        left unselected.&nbsp; The key sequence
        <code>Meta-Left</code>/<code>Meta-Right</code> has the same effect as
        <code>Alt-Left</code>/<code>Alt-Right</code>.&nbsp; If
        <code><b>tk_strictMotif</b></code> is false and the edit window is not
        a text or ctext widget then <code>Meta-b</code> and <code>Meta-f</code>
        behave the same as <code>Alt-Left</code> and <code>Alt-Right</code>,
        respectively.&nbsp; If the edit window is a Tk or tile checkbutton or
        menubutton widget then <code>Left</code>/<code>Right</code> has the
        same effect as <code>Alt-Left</code>/<code>Alt-Right</code>.</li>

        <li class="tm">When editing a cell that is not the first/last editable
        cell within its column, <code>Alt-Up</code>/<code>Alt-Down</code>
        (<code>Command-Up</code>/<code>Command-Down</code> on Mac OS Classic
        and Mac OS X Aqua) terminates the editing in the current cell, moves
        the edit window one line up/down within the column, selects the
        contents of the edit window's first entry or entry-like component (if
        any), and sets the insertion cursor to its end.&nbsp; If the new edit
        window is a text or ctext widget then its contents are left
        unselected.&nbsp; The key sequence
        <code>Meta-Up</code>/<code>Meta-Down</code> has the same effect as
        <code>Alt-Up</code>/<code>Alt-Down</code>.&nbsp; If
        <code><b>tk_strictMotif</b></code> is false and the edit window is not
        a text or ctext widget or an Iwidgets combobox, then
        <code>Control-p</code> and <code>Control-n</code> behave the same as
        <code>Alt-Up</code> and <code>Alt-Down</code>, respectively.&nbsp; If
        the edit window is a Tk or tile entry, Tk or tile checkbutton, Tk or
        tile menubutton, BWidget Entry, Iwidgets entryfield/spinner/spinint, or
        a mentry widget of type <code>"FixedPoint"</code>, then
        <code>Up</code>/<code>Down</code> has the same effect as
        <code>Alt-Up</code>/<code>Alt-Down</code>.</li>

        <li class="tm">When editing a cell that is not the first/last editable
        cell within its column, <code>Alt-Prior</code>/<code>Alt-Next</code>
        (<code>Command-Prior</code>/<code>Command-Next</code> on Mac OS Classic
        and Mac OS X Aqua) terminates the editing in the current cell, moves
        the edit window up/down by one page within the column, selects the
        contents of the edit window's first entry or entry-like component (if
        any), and sets the insertion cursor to its end.&nbsp; If the new edit
        window is a text or ctext widget then its contents are left
        unselected.&nbsp; The key sequence
        <code>Meta-Prior</code>/<code>Meta-Next</code> has the same effect as
        <code>Alt-Prior</code>/<code>Alt-Next</code>.&nbsp; If the edit window
        is not a text or ctext widget, BWidget SpinBox, Oakley combobox, or a
        mentry widget of type <code>"Date"</code>, <code>"Time"</code>,
        <code>"DateTime"</code>, <code>"IPAddr"</code>, or
        <code>"IPv6Addr"</code>, then <code>Prior</code>/<code>Next</code> has
        the same effect as <code>Alt-Prior</code>/<code>Alt-Next</code>.</li>

        <li class="tm">When editing a cell that is not the only editable cell
        of the tablelist widget, <code>Alt-Home</code>/<code>Alt-End</code>
        (<code>Command-Home</code>/<code>Command-End</code> on Mac OS Classic
        and Mac OS X Aqua) terminates the editing in the current cell, moves
        the edit window into the first/last editable cell of the tablelist,
        selects the contents of the edit window's first entry or entry-like
        component (if any), and sets the insertion cursor to its end.&nbsp; If
        the new edit window is a text or ctext widget then its contents are
        left unselected.&nbsp; The key sequence
        <code>Meta-Home</code>/<code>Meta-End</code> has the same effect as
        <code>Alt-Home</code>/<code>Alt-End</code>.&nbsp; If
        <code><b>tk_strictMotif</b></code> is false and the edit window is not
        a text or ctext widget then <code>Meta-&lt;</code> and
        <code>Meta-&gt;</code> behave the same as <code>Alt-Home</code> and
        <code>Alt-End</code>, respectively.&nbsp; If the edit window is not a
        text or ctext widget then
        <code>Control-Home</code>/<code>Control-End</code> has the same effect
        as <code>Alt-Home</code>/<code>Alt-End</code>.</li>
      </ol>
    </dd>

    <dd class="tm">Before moving the edit window, the key sequences mentioned
    under 7 - 11 move the active item or element and change the (cell)selection
    and the (cell)selection anchor in the body of the tablelist widget.&nbsp;
    For example, if <code>Alt-Up</code>/<code>Alt-Down</code> or
    <code>Meta-Up</code>/<code>Meta-Down</code>
    (<code>Command-Up</code>/<code>Command-Down</code> on Mac OS Classic and
    Mac OS X Aqua) is pressed when editing a cell that is not the first/last
    editable cell within its column, then the active item or element (depending
    on the selection type) moves one line up/down.&nbsp; If the selection mode
    is <code><b>browse</b></code> or <code><b>extended</b></code> then the new
    active item or element is also selected and all other items or elements are
    deselected.&nbsp; In <code><b>extended</b></code> mode the new active item
    or element becomes the (cell)selection anchor.&nbsp; This is exactly the
    same behavior as the one exhibited by the <code>Up</code> and
    <code>Down</code> keys in the tablelist's body.</dd>

    <dd class="tm">If the tablelist's <code><b><a href=
    "#state">state</a></b></code> is <code><b>disabled</b></code> then none of
    the above actions occur.</dd>

    <dt class="tm" id="keywords"><b>KEYWORDS</b></dt>

    <dd>tablelist, multi-column, listbox, tree, widget</dd>
  </dl>

  <div align="center">
    <p><a href="#contents">Contents</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href=
    "index.html">Start page</a></p>
  </div>
</body>
</html>
